Autor | Zpráva | ||
---|---|---|---|
Vanama Profil |
#1 · Zasláno: 7. 10. 2011, 09:39:37 · Upravil/a: Vanama
Ahoj,
potřeboval bych rozdělit datum a čas, ale nějak nevím jak na to. Resp. nevím, který příkaz k tomu požít. Datum může být bohužel v jakýmkoliv formátu. U času se předpokládá, že bude mít formát hh:mm a případně ještě :ss. Může se taky stát, že tam bude am či pm. vstupní hodnota bude např. 10.duben 2011 v 13:45:12. výstupní by měla být array('10.duben 2011', '13:45:12') Úplně ideální by byl nějaký univerzální skript, který to vše převede do mysql formátu. Skript na to sice mám, ale musím pracovat jak s datem tak i časem nehledě na to, že mezi tím nebo klidně i za tím může být něco co nemá s datumem nic společného. Proto bych si to radši rozděli a potom pracoval jen s datem. Díky za rady |
||
Tori Profil |
#2 · Zasláno: 7. 10. 2011, 09:52:36
Vanama:
„U času se předpokládá, že bude mít formát hh:mm“ Takže regulár: \d{2}:\d{2}(?:\d{2})? „Datum může být bohužel v jakýmkoliv formátu“ Tak si ty formáty napište pod sebe a najděte společné prvky - např. měsíc je vždy slovem nebo může být i číslo? Pokud se dá spolehnout na to, že rok bude vždy čtyřciferný, tak se můžete chytit toho: // dvě skupiny znaků před čtyřmístným číslem (\d{2})[. ]+?(\d{2}|[^ ]+?)[. ]+?(\d{4}) |
||
Vanama Profil |
#3 · Zasláno: 7. 10. 2011, 10:04:32 · Upravil/a: Vanama
To jo, já to pro čas mám takhle (nevím co je lepší)
([0-9]{1,2}:[0-9]{1,2}(:[0-9]{1,2})?) Ale jakým příkazem to vytáhnu? Myslím jen čas a datum zvlášť. preg_replace asi ne. Na ten datum se nemůžu spolehnout na nic. Může to být klidně i bez roku nebo tam místo data může být třeba "dnes" |
||
Tori Profil |
#4 · Zasláno: 7. 10. 2011, 10:08:11 · Upravil/a: Tori
preg_match
Rozdíl je jen v tom, že já jsem hledala pouze dvojmístná čísla a tento regulár umožňuje i jednomístná. |
||
Vanama Profil |
#5 · Zasláno: 7. 10. 2011, 10:28:22
Aha, tak jsem to špatně používal.
Takhle to funguje preg_match('/([0-9]{1,2}:[0-9]{1,2}(:[0-9]{1,2})?)/', $date, $time); echo $time[0] Díky moc |
||
Časová prodleva: 13 let
|
0