Je suis confus lorsque j'utilise php pour gérer la date / l'heure.
Voici ce que j'essaie de faire: lorsqu'un utilisateur visite ma page, je lui demande son fuseau horaire, puis j'affiche le «jour de la semaine» dans son fuseau horaire.
Je ne veux pas utiliser la journée du navigateur. Je veux faire ce calcul en php.
Voici comment j'essaye d'y parvenir:
- Le fuseau horaire saisi par l'utilisateur
- Horodatage Unix calculé par la fonction php time ().
Mais je ne sais pas comment procéder ... Comment pourrais-je obtenir le «jour de la semaine» dans ce fuseau horaire.
date("N", $timestamp)
pour obtenir des1..7
valeurs à partir de lundi. Dans les anciennes versions, vous pouvez utiliser l'astuce(date("w", $timestamp) + 6) % 7
pour obtenir des0..6
valeurs à partir de lundi.Ma solution est la suivante:
La sortie est:
Tuesday
La sortie est:
Tue
la source
Je pense que c'est la bonne réponse, changez simplement
Europe/Stockholm
le fuseau horaire des utilisateurs.http://php.net/manual/en/function.date.php
Pour une liste des fuseaux horaires pris en charge, voir http://php.net/manual/en/timezones.php
la source
Merci beaucoup les gars pour vos commentaires rapides.
C'est ce que j'utiliserai maintenant. Publier la fonction ici pour que quelqu'un puisse l'utiliser.
Signalez si vous trouvez des corrections.
la source
Un autre moyen rapide:
la source
Si vous pouvez obtenir leur décalage de fuseau horaire, vous pouvez simplement l'ajouter à l'horodatage actuel, puis utiliser la fonction gmdate pour obtenir leur heure locale.
la source
Cela devrait fonctionner (ne l'a pas testé, donc YMMV). Il fonctionne en stockant le fuseau horaire actuel du script, en le remplaçant par celui spécifié par l'utilisateur, en obtenant le jour de la semaine à partir du
date()
fonction à l'horodatage spécifié, puis en redéfinissant le fuseau horaire du script sur ce qu'il était au départ.Cependant, vous pourriez avoir des aventures avec des identifiants de fuseau horaire.
la source
"Day of Week" est en fait quelque chose que vous pouvez obtenir directement à partir de la fonction php date () avec le format "l" ou "N" respectivement. Jetez un œil au manuel
edit: Désolé, je n'ai pas lu correctement les messages de Kalium, il a déjà expliqué cela. Ma faute.
la source
La date de vérification est le lundi ou le dimanche avant le dernier lundi ou le dernier dimanche
la source
Basé sur l'une des autres solutions avec un drapeau pour basculer entre les semaines commençant le dimanche ou le lundi
la source
Les représentations à base de lettres standard des parties de date sont excellentes, sauf qu'elles ne sont pas si intuitives. Le moyen beaucoup plus pratique est d'identifier les abstractions de base et un certain nombre d'implémentations spécifiques. De plus, avec cette approche, vous pouvez bénéficier de l'auto-complétion.
Puisque nous parlons ici de datetimes, il semble plausible que l'abstraction de base soit
ISO8601DateTime
. L'une des implémentations spécifiques est la date / heure actuelle, celle dont vous avez besoin quand a fait une requête à votre backend, doncNow()
class. Le deuxième qui est d'une certaine utilité pour vous est un datetime ajusté à un fuseau horaire. Sans surprise, il s'appelleAdjustedAccordingToTimeZone
. Et enfin, vous avez besoin d'un jour de la semaine dans le fuseau horaire d'une date / heure passée: il existe uneLocalDayOfWeek
classe pour cela. Le code ressemble donc à ce qui suit:Pour en savoir plus sur cette approche, jetez un œil ici .
la source
la source