J'ai un problème à obtenir la date de lundi de la semaine en cours.
echo date('Y-m-d',strtotime('monday this week'));
8 Réponses :
Oui, l'interprétation des chaînes dans Strtotime s'est considérablement améliorée en 5.3. P>
Exécutez la commande "Date" de l'invite CLI sur le serveur et de votre bureau local. Cela vérifiera si le système d'exploitation constate la même date sur les deux systèmes. P>
Pas que j'ai vu exactement ce problème, mais j'ai vu des êtres très similaires. Strtotime semble changer de comportement entre différentes versions de PHP et sauver les opérations simples (par exemple, «+1 semaine»), il est difficile de garantir que les fonctionnalités resteront les mêmes. P>
Si vous n'êtes pas en mesure de passer à la version 5.3, qui, comme indiqué correctement, semble être une amélioration, tout ce que je peux recommander, joue avec des permutations. Il est souvent possible d'obtenir la bonne réponse des anciennes versions de Strtotime en rehrasant la question. Des exemples peuvent inclure ... p>
Vous avez deux choix: Évitez d'utiliser cette fonction de vérification si la date est à l'avenir, si oui, vous décentrez-le de 7 jours. Bienvenue dans le World Wolderful de PHP. P>
utiliser
date ('y-m-d', strtotime (date ('o - \\ ww'))); code> p>
Économiseur de vie. Surtout si vous ne pouvez pas passer à PHP 5.3.
Regardez sur ceci: p>
"Sachez que vous ne pouvez pas compter sur cette fonction seule pour valider une date, car elle acceptera des dates insensées comme le 31 février. P>
Aussi, la fonctionnalité "... semaine" par elle-même peut ne pas faire ce que vous attendez. Si utilisé un dimanche, la «semaine prochaine» ne retournera pas un horodatage du lundi prochain, mais du lundi après cela. De même, un horodatage du lundi de la semaine en cours est renvoyé lorsque "Précédent / La semaine dernière" est utilisé et "Cette semaine" renvoie un cachet du lundi de la semaine prochaine (c'est-à-dire le lendemain). Ce n'est pas la "semaine commence l'effet dimanche", comme cela signifierait que tous les horodats retournés devraient être un dimanche et aucun d'entre eux n'est " P>
FF aujourd'hui est dimanche, vous aurez tort. P>
Voici une autre solution qui fonctionne (en fait le seul qui a fonctionné pour moi):
Réponse super différée, mais pour quelqu'un d'autre comme moi qui le voit, ce n'est pas la preuve d'été. 48 heures avant 2018-09-30 en NZ sont 2018-09-27, pas le 28. Utiliser Strtotime avec "-X jours" serait un meilleur pari.
$today = strtotime('This week monday 8 am'); echo $this->unix_timestamp_to_human($today,"D M j G:i:s T Y");
Seule l'hypothèse est peut-être que vous définissez le début de la semaine différemment ...
Définissez la date de votre serveur pour être correcte