Est-il possible de changer une date dedates en PHP Manipuler sans utiliser les expressions régulières
1985-12-15
à
1985-12
sans utiliser une expression régulière?
Est-il possible de changer une date dedates en PHP Manipuler sans utiliser les expressions régulières
1985-12-15
à
1985-12
sans utiliser une expression régulière?
<?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.
$myDate = date('Y-m',strtotime('1985-12-15'));
echo $myDate // prints '1985-12'
pas mieux substr($date,0,strrpos($date,'-'));
?
qui serait le moins cher?
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 ^^)
woot si 1985-1-1: D – n00b
@ 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 ^^ –
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 ...
avez-vous déjà cette valeur de temps dans un tableau ou souhaitez-vous une telle sortie de la fonction date?
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];
Accessoires permettant d'éviter une expression rationnelle inutile. :-) – staticsan