Hallo,

Ik probeer een string te converteren naar de gewenste notitie voor een timestamp.
De oorspronkelijke notitie (string) is: "11-1-12 10:46:53" (let ook op dubbele spatie)

De gewenste notie is: "jjjj-mm-dd hh:mm:ss" (1 spatie ertussen), dus in onderstaand voorbeeld wil als resultaat: "2012-01-11 10:46:53", maar ben hier nu kompleet de weg kwijt, onderstaande geeft een onjuist resultaat:

<?php
$datatimestamp = "11-1-12 10:46:53";
echo $datatimestamp."<br>"; // resultaat: "11-1-12 10:46:53"
$newdate = preg_replace(
"/(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2}):(\d{2})/i",
"$3-$2-$1 $4:$5:$6",
$datatimestamp
);
echo $newdate."<br>"; // resultaat: "11-1-12 10:46:53"
?>

Heeft iemand een idee waar de fout zit en/of hoe het anders kan?
Ze mogen hier zeggen wat ze willen, maar als je een unix time hebt, heb je een moment in de geschiedenis (of toekomst) dat ondubbelzinnig is.

Als je een datetime hebt, moet je ook een timezone mee opslaan; anders is de tijd niet ondubbelzinnig.

Test maar eens uit op momenten rond de wissel van winteruur/zomeruur. Als je dan enkel de datetime hebt opgeslagen, en niet de timezone, weet je niet met welk van de twee je te maken hebt.

De meeste zelfgeschreven functies (over tijd/datum; timers; tijd tot bepaald moment) falen trouwens omwille van timezones.
Met unix seconden (als je ze goed gebruikt) zal je dat probleem niet hebben.

Reageren