2010-03-01 7 views
4

J'ai une date dans ce format:conversion de la date à ce format

24-12-2010 // DAY - MONTH - YEAR 

je dois l'obtenir dans ce format:

1995-12-31T23:59:59.999Z // The Z is for the TimeZone I think. 

Vérifiez ce lien sur:

http://lucene.apache.org/solr/api/org/apache/solr/schema/DateField.html

Le lien ci-dessus est la façon dont j'ai besoin de la date. J'utilise PHP maintenant, donc cela doit être avec PHP. Comment puis-je convertir ces dates de la manière la plus simple?

Merci

Répondre

2

Vous pouvez utiliser la classe DateTime

$dateTime = new DateTime(); 
$dateTime.setDate(24, 12, 2010); 

$output = $dateTime.format(DateTime::W3C); 

// Output now is your date in W3C format. 
+0

cela ne fonctionne présents mais malheureusement pas avec Solr. La sortie serait "2012-11-28T17: 21: 11 + 0100" ce qui est faux. – Christian

+1

Aussi. la notation n'existe pas en PHP. – Christian

9

C'est une date de format ISO 8601; ce qui suit est ce que vous voulez.

gmdate('Y-m-d\TH:i:s\Z', strtotime($date_value)); 
+0

Je ne suggérerais pas de cette façon, car il est sujet à erreur. Mieux vaut fournir le format d'entrée vous-même, et utiliser DateTime :: W3C pour le format de sortie. – Snake

+0

Si le format d'entrée est fixe et prévisible, il est fiable (par exemple, à partir d'une base de données). Si le format d'entrée provient de l'utilisateur, il est toujours nécessaire de le réécrire. –

0
$date = strtotime('24-12-2010'); 
$new_date = gmDate("Y-m-d\TH:i:s.z\Z",$date); 
5

Vous pouvez faire quelque chose comme ça:

$dateTime = new DateTime($myDate); 
$formatted = $dateTime->format("Y-m-d\TH:i:s.z\Z"); 

La solution mentionnée avec:

$dateTime->format(DateTime::W3C); 
$dateTime->format(DateTime::ISO8601); 

ne renvoie des chaînes comme:

2012-11-28T17:21:11+0100 

qui ne peut pas être analysé, au moins avec les nouvelles versions de Solr.

Je n'utiliserais pas gmdate si vous avez besoin de prendre en charge les fuseaux horaires. L'implémentation de DateTime est bien faite et est également disponible pour la programmation fonctionnelle.