Autor | Zpráva | ||
---|---|---|---|
Kuhion Profil * |
#1 · Zasláno: 14. 2. 2010, 17:11:31
Zdravím.
potřebuju pomoci s převodem data z: 10-2-2010 15:30:00 na 2010-02-10 15:30:00 Jde to nějak? :( Díky |
||
Keeehi Profil |
#2 · Zasláno: 14. 2. 2010, 17:13:08
|
||
mattyZEM Profil |
#3 · Zasláno: 14. 2. 2010, 17:13:41 · Upravil/a: mattyZEM
Třeba substr :) http://cz.php.net/manual/en/function.substr.php
|
||
AM_ Profil |
#4 · Zasláno: 14. 2. 2010, 18:47:47
mattyZEM:
„Třeba substr“ nebo si to rovnou napsat v Assembleru, viď :) Kuhion: zkus date('Y-m-d H:i:s', strtotime('10-2-2010 15:30:30')); Podrobnosti o zápisu prvního parametru funkce date najdeš na http://php.net/date |
||
Majkl578 Profil |
#5 · Zasláno: 14. 2. 2010, 18:56:59 · Upravil/a: Majkl578
AM:
Tam může být problém s rokem <1970. :) Řešení pomocí reguláru a callbacku. echo preg_replace_callback('~^(\d+)\-(\d+)\-(\d+)~', function ($m) { $normalize = function ($s) { return $s[0] !== '0' && strlen($s) === 1 ? '0' . $s : $s; }; return $m[3] . '-' . $normalize($m[2]) . '-' . $normalize($m[1]); }, '10-2-2010 15:30:00'); |
||
mattyZEM Profil |
#6 · Zasláno: 14. 2. 2010, 19:02:13
Majkl578:
Moje řešení by bylo kratší! :D |
||
Majkl578 Profil |
#7 · Zasláno: 14. 2. 2010, 19:08:24 · Upravil/a: Majkl578
mattyZEM:
Nejlepší řešení pro období 1970-2038 je to, které napsal AM_. Tvoje řešení já nemám rád, používat několikrát substr, strpos a podobné se mi opravdu nelíbí. |
||
mattyZEM Profil |
#8 · Zasláno: 14. 2. 2010, 19:10:35
Majkl578:
„opravdu nelíbí.“ Ale bylo by kratší :) |
||
Majkl578 Profil |
#9 · Zasláno: 14. 2. 2010, 19:11:04
mattyZEM:
Schválně to svoje řešení napiš. :) |
||
mattyZEM Profil |
#10 · Zasláno: 14. 2. 2010, 19:18:33 · Upravil/a: mattyZEM
$t='10-2-2010 15:30:00'; $cas=substr($t,5,4); $cas.=substr($t,3,1); // Tady bych ověřova přes preg_replace zda se jedná o číslo větší než 9 (stejně jako u dní) $cas.=substr($t,0,2); $cas.=' '; $cas.=substr($t,-8); Samozřejmě toto není celé (je zbytečnost to psát když to nikdo nevyužije :D) a chybí tam dost podmínek, viz #3 |
||
DJ Miky Profil |
#11 · Zasláno: 14. 2. 2010, 19:32:04
Už teď to není o moc kratší a přidáním těch podmínek by se to ještě víc prodloužilo...
Když už přes rozsekávání řetězce, tak takhle: $datum='10-2-2010 15:30:00'; function doplnit($str) {return str_pad($str,2,'0',STR_PAD_LEFT);} $datum=explode(' ',$datum); $datum=implode('-',array_map('doplnit',array_reverse(explode('-',$datum[0])))).' '.$datum[1]; |
||
AM_ Profil |
#12 · Zasláno: 14. 2. 2010, 19:56:48
mattyZEM:
ano, napsat na fórum "substr" opravdu bylo kratší. Nicméně rada kvapná málo platná, ani mě by se nechtělo rozepisovat to přes substr. Pokud jde o současná data, tak je opravdu nejrychlejší to moje (navíc vstupní datum to spolkne v libovolném formátu); pokud ne (<1970 a >2038), tak by to šlo zapsat jedním regulárem bez callbacku (předpokládám, že je to převod do mysql formátu, takže 2010-2-10 je uspokojivý výsledek, MySQL databáze to bez úvodní nuly chápe): preg_replace('~^(\\d+)-(\\d+)-(\\d+)~', '\\3-\\2-\\1', $datum); |
||
Časová prodleva: 14 let
|
0