Autor | Zpráva | ||
---|---|---|---|
ForestCZE Profil |
Ahoj, snažím se už nějakou dobu, ale nenapadá mě nic. Mám datum narození jako string (bohužel) v různých formátech a nemohu je předělat jednotně na DateTime object.
Příklady formátů: 2021-06-04 2021/06/04 06.04.2021 6.4.2021 6. 4. 2021 Psal to nějaký dobytek. Nicméně, pokud je ten string napsaný jako 2021-06-04, tak mi to jde přeparsovat a vypsat jako 4. 6. 2021: {$person->dateofbirth|date: 'j. n. Y'} Pokud ne, tak to vyhodí error, že se to nepodařilo naparsovat. Mohu nějak zjistit, jestli se to dá naparsovat? (něco jako tryParse v C#) a pokud ano, tak bych to vypsal jako: {$person->dateofbirth|date: 'j. n. Y'} jinak {$person->dateofbirth} Díky předem za pomoc. ____________ EDIT: Sepsal jsem něco takového, ale otázka je, zda to nejde nějak lépe a jednodušeji. {var $dateofbirth = strpos($person->dateofbirth, '-')} {if $dateofbirth === false} {$person->dateofbirth} {else} {$person->dateofbirth|date:'j. n. Y'} {/if} |
||
Keeehi Profil |
#2 · Zasláno: 5. 6. 2021, 09:22:16
Ono je trochu problém, že některé formáty nemusí být standardní. Ale ať už je formát jakýkoli, pokud ho popíšeš, rozparsovat se dá. Použij DateTime::createFromFormat. Nadefinuj tam jeden z těch možných formátů, když to projde, ok. Když ne (vrátí se false) tak to zkus s další definicí formátu a tak dále až vyzkoušíš všechny které chceš.
|
||
N71 Profil * |
#3 · Zasláno: 7. 6. 2021, 10:28:42
Problém je spíš, že tohle není PHP, ale nějaká šablona (Latte?). Takže je vhodné dělat kontrolu v controlleru, který data šabloně předává. Pomoci by ti mohla funkce strtotime(), která má shodnou implementaci s konstruktorem objektu Date.
|
||
Časová prodleva: 3 roky
|
0