29. oktober 2006 - 12:50
Der er
11 kommentarer og 1 løsning
Lave dato om til timestamp
Hejsa Jeg har i en variable ($regs) følgende data : 03:31:28 Oct 29, 2006 PST Denne dato vil jeg gerne have lavet om til et timestamp - dog UDEN tiden! dvs. kun datoen i eksemplet : mktime(0, 0, 0, 10, 29, 2006); Hvad er det jeg skal bruge, er det noget preg_match sammen med at måneds array ?? $months = array( 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6, 'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 );
Annonceindlæg fra Thinkwise
29. oktober 2006 - 12:57
#1
Ja, det kunne du gøre. Men ville det ikke være lettere med strtotime og så bare hive år, mnd og dag ud fra den resulterende dato? $date = strtotime($regs); print date('Y-m-d', $date);
29. oktober 2006 - 13:00
#2
jo det ville det sikert - men kendte ik´ke lige den funktion :-) Prøver det lige!
29. oktober 2006 - 13:03
#3
okay, det funger næsten... Et lille tjek på om den linie der skal oversættes indeholder PST ville være rart, da det køre gennem en while lykke, og der er ca. 10 linier der kommer ud fra $regs, så lige nu ser det underligt ud, da ALLE linier har en 1970-01-01 FORAN sin oprendelige værdi - dog har den linie med datoen den korekte dato...
29. oktober 2006 - 13:04
#4
Ellers: function month2int($month) { $months = array( 'Jan'=>1, 'Feb'=>2, 'Mar'=>3, 'Apr'=>4, 'May'=>5, 'Jun'=>6, 'Jul'=>7, 'Aug'=>8, 'Sep'=>9, 'Oct'=>10, 'Nov'=>11, 'Dec'=>12 ); return $months[$month]; } function mkdate($matches) { $month = month2int($matches[1]); return mktime(0, 0, 0, $month, $matches[2], $matches[3]); } $ts = preg_replace_callback('/([a-z]{3}) (\d\d?), (\d{4})/i', 'mkdate', $regs);
29. oktober 2006 - 13:04
#5
Nå, havde ikke lige reloadet inden min 2. post. Den er også utestet.
29. oktober 2006 - 13:05
#6
13:03:59 > Forstår jeg ikke lige?
29. oktober 2006 - 13:22
#7
Har fundet løsningen : if (preg_match("/PST/i", "$regs[1]")) { $date = strtotime($regs[1]); $mydate = date('Y-m-d', $date); echo "$mydate<br>"; }
29. oktober 2006 - 13:22
#8
smid et svar og du får point :-)
29. oktober 2006 - 13:44
#9
Ah - ok. Du bør dog bruge strstr() i stedet for en preg_match, da den kræver færre ressourcer: if (strstr($regs[1], 'PST')) { $date = strtotime($regs[1]); $mydate = date('Y-m-d', $date); echo $mydate . '<br>'; }
29. oktober 2006 - 13:44
#10
Svar.
29. oktober 2006 - 15:28
#11
Man kunne også blot gøre sådan her: $regs = "03:31:28 Oct 29, 2006 PST"; $ts = strtotime(substr($regs, 9));
29. oktober 2006 - 15:30
#12
hmortensen > Hmm, ja det ville vist have været noget lettere ;)
Vi tilbyder markedets bedste kurser inden for webudvikling