On 26 jul 2006, someone impersonating Mathias Mejborn <mame06@ceus.dk>
came to dk.edb.internet.webdesign.serverside.php and said:
> Christian Joergensen wrote:
>> Mathias Mejborn <mame06@ceus.dk> writes:
>>
>>> Det virker fint nok hvis jeg bare skriver:
>>>
>>> d. <?=$d_gtagwall['date'];?>
>>>
>>> Men hvis jeg skriver:
>>>
>>> d. <?=date("d/m Y - H:i", $d_gtagwall['date']);?>
>>>
>>> Så bliver datoen udskrevet således:
>>>
>>> d. 01/01 1970 - 01:33
>>>
>>> Nogen ide til hvad jeg gør galt, har kigget på date funktionen på
>>> php.net men synes ikke at jeg der kan se hvad jeg gør galt.
>>
>> Hvad indeholder $d_gtagwall['date']?
>>
> Jo det er et timestamp, udskrift fra mysql:
>
> date timestamp ON UPDATE CURRENT_TIMESTAMP
> Yes CURRENT_TIMESTAMP Change Drop
> Primary Index
> Unique Fulltext
Desværre bruger MySQL og PHP's date-funktioner to forskellige typer af
timestamps: PHP's datefunktioner er bygget til at manipulere det
klassiske Unix-timestamp (som tæller sekunder fra 1. januar 1970 og
derfor ikke umiddelbart er læseligt med det blotte øje). MySQL har
derimod sit timestamp-format, hvor 1. januar 1970 vil skrives som
"19700101000000". Let læseligt, men ikke kompatibelt med PHP's date-
funktioner.
Der er to muligheder for at løse dette:
Enten bruger man MySQL's timestamp og bruger PHP's string-funktioner på
datoerne.
Eller - hvis man gerne vil bruge de mange fede PHP date-funktioner -
konverterer man i sit SQL-request MySQL's timestamps til Unix-timestamps
vha. MySQL-funktionen UNIX_TIMESTAMP().
Bruger man meget dato-formatering, er sidstnævnte en rigtig god vane at
tillæge sig.
--
bonfils
http://kim.bonfils.com