2010-06-20 5 views
3

J'ai une ligne de base de données dont le type est "timestamp". Il se remplit automatiquement chaque fois qu'un nouvel enregistrement a été ajouté avec l'heure d'insertion de cet enregistrement. En ce moment, pour l'un des dossiers qu'il détient la valeur:Comment formater la date à partir de l'horodatage en PHP?

2010-06-19 18:40:51 

J'ai essayé de transformer cela en un format plus convivial par:

$timeStamp = $row['date']; 
$timeStamp = date("m/d/Y", $timeStamp); 

Mais il retourne ceci:

12/31/1969 

J'ai lu quelque part que la fonction date ne peut être utilisée que sur timestamp unix, peut-être que ma base de données n'est pas un horodatage correct et que je dois la convertir en une première fois avant d'utiliser la fonction date (?). Quelle est la solution?

Répondre

4

Utilisez la fonction strtotime:

$timeStamp = $row['date']; 
$timeStamp = date("m/d/Y", strtotime($timeStamp)); 

Pour la date de votre exemple 2010-06-19 18:40:51, il retournerait:

06/19/2010 


Les mises à jour automatiquement sur le terrain timestamp mais vous pouvez désactiver ce comportement en le changeant en DEFAULT CURRENT_TIMESTAMP sinon il mettra à jour automatiquement. De l'manual:

Dans une instruction CREATE TABLE, la première colonne TIMESTAMP peut être déclaré dans l'une des manières suivantes:

Avec les deux DEFAULT clauses CURRENT_TIMESTAMP et ON UPDATE CURRENT_TIMESTAMP, la colonne a l'horodatage en cours pour sa valeur par défaut, et est automatiquement mis à jour. Avec les clauses DEFAULT et ON UPDATE, il est identique à DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP.

Avec une clause DEFAULT CURRENT_TIMESTAMP et aucune clause ON UPDATE, la colonne possède l'horodatage en cours pour sa valeur par défaut mais n'est pas automatiquement mise à jour.

+0

Ha, tu m'as battu. –

+0

@ aharon: oui, de telles questions prennent des secondes pour répondre :) – Sarfraz

2

strtotime($timeStamp) (chaîne à temps) correspond à ce que vous voulez convertir en un horodatage unix.

Ensuite, vous pouvez utiliser la date à ce sujet, donc quelque chose comme date("m/d/Y", strtotime($timeStamp))

http://php.net/manual/en/function.strtotime.php

0

SELECT UNIX_TIMESTAMP (sql_row_with_timestamp) AS some_much_more_readable_name DE your_table devrait faire l'affaire.

Questions connexes