2010-07-27 7 views
0

Comment puis-je convertir une chaîne de temps comme celui-ci:Conversion d'une chaîne de temps pour l'horodatage UNIX

30/7/2010

à un horodatage UNIX?

J'ai essayé strtotime() mais je reçois une chaîne vide :(

+1

'strtotime' ne fonctionne pas parce que (à partir de la doc) "La fonction s'attend à recevoir une chaîne contenant un format de date en anglais américain" –

Répondre

10

PHP> = 5.3:

$var = DateTime::createFromFormat('j/n/Y','30/7/2010')->getTimestamp(); 
+0

cool, ça marche, merci – Alex

2

Vous voulez probablement utiliser http://us3.php.net/manual/en/function.strptime.php (strptime) depuis votre date est dans un format différent de ce que PHP peut être attendu.

+0

+1. Si vous avez PHP> = 5.1 et un format de date qui ne fonctionne pas avec strtotime, strptime est définitivement une option. –

0

Vous pouvez également le convertir en un format strtotime() peut accepter, comme Y/M/D:.

$tmp = explode($date_str); 
$converted = implode("/", $tmp[2], $tmp[1], $tmp[0]); 
$timestamp = strtotime($converted); 
+3

Si vous allez faire cela, vous pourriez tout aussi bien 'mktime (0, 0, 0, $ tmp [1], $ tmp [0], $ tmp [2]);' –

5

Vous utilisez le format de date UK

Méthode rapide et sale:

$dateValues = explode('/','30/7/2010'); 
$date = mktime(0,0,0,$dateValues[1],$dateValues[0],$dateValues[2]); 
+1

C'est ce que je suis venu avec aussi - n'y at-il vraiment aucune fonction qui prend une chaîne de format de date et une chaîne de date textuelle et renvoie l'horodatage? On dirait un trou bizarre dans l'interface date de PHP –

0

La réponse PHP 5.3 a été grande

DateTime::createFromFormat('j/n/Y','30/7/2010')->getTimestamp(); 

Voici une solution < 5.3.0

$timestamp = getUKTimestamp('30/7/2010'); 

function getUKTimestamp($sDate) { 
    list($day, $month, $year) = explode('/', $sDate); 
    return strtotime("$month/$day/$year"); 
}