2009-09-21 6 views

Répondre

7
<?php echo date('Y-m', strtotime('1985-12-15')); ?> 

Cela devrait le faire.

Cela va, en utilisant strtotime, convertir 1985-12-15 en un timestamp unix. La fonction date prend ensuite un deuxième horodatage de paramètre sur lequel formater la date.

4

Convertir la date à temps par strtotime puis utilisez date à la sortie en format de date, comme suit:

<?php  
echo date('Y-m', strtotime('1985-12-15')); 
+0

Bugger, battu à lui par 6 secondes –

0
$myDate = date('Y-m',strtotime('1985-12-15')); 
echo $myDate // prints '1985-12' 
0

pas mieux substr($date,0,strrpos($date,'-'));?

qui serait le moins cher?

3

Peut-être que je suis juste stupide, mais si vous voulez seulement le début de cette date, stocké comme une chaîne, ne pouvez-vous pas simplement utiliser substr pour extraire les 7 caractères au début de cette chaîne?

Un peu comme celui-ci, par exemple:

$input = '1985-12-15'; 

$output = substr($input, 0, 7); 
var_dump($output); 

Ce qui ne vous donne:

string '1985-12' (length=7) 

Pas besoin de toute fonction liée date de manipulation, dans ce cas - et ce sera probablement être encore plus rapide/cheapier que l'analyse de la chaîne à une date et tout cela.

(Ouais, je sais, l'optimisation prématurée ^^)

+0

woot si 1985-1-1: D – n00b

+0

@ noob52: bien noté - la question, dans ce cas, est "cette date sera-t-elle stockée comme 1985-01-01 , ou comme 1985-1-1? " ; J'utiliserais la première solution, et j'avoue que je n'ai pas pensé au second ^^ –

0

Si vous pensez qu'une expression régulière est pas « pas cher », alors les fonctions de temps seront certainement encore plus cher: vous devez convertir la chaîne dans une valeur de temps, puis reformatez-la en une chaîne ...

0

avez-vous déjà cette valeur de temps dans un tableau ou souhaitez-vous une telle sortie de la fonction date?

0

Si vous n'êtes pas sûr de la façon dont la date sera formulée, vous devez utiliser la fonction strtotime, sinon c'est probablement aussi facile à faire si le format est aaaa-mmm-jj ou aa-m-d.

$datearray = explode('-',$date); 
echo $datearray[0].'-'.$datearray[1]; 
Questions connexes