Ich bin verwirrt, wenn ich PHP verwende, um mit Datum und Uhrzeit umzugehen.
Ich versuche Folgendes zu tun: Wenn ein Benutzer meine Seite besucht, frage ich nach seiner Zeitzone und zeige dann den "Wochentag" in seiner Zeitzone an.
Ich möchte den Tag des Browsers nicht nutzen. Ich möchte diese Berechnung in PHP machen.
So versuche ich es zu erreichen:
- Die vom Benutzer eingegebene Zeitzone
- Unix-Zeitstempel berechnet mit der Funktion php time ().
Aber ich weiß nicht, wie ich vorgehen soll ... Wie würde ich den "Wochentag" in dieser Zeitzone bekommen?
date("N", $timestamp)
erhalten1..7
Werte von Montag beginnen. In den älteren Versionen können Sie den Trick verwenden(date("w", $timestamp) + 6) % 7
, um0..6
Werte ab Montag zu erhalten.Meine Lösung lautet:
Ausgabe ist:
Tuesday
Ausgabe ist:
Tue
quelle
Ich denke, dies ist die richtige Antwort. Wechseln Sie einfach
Europe/Stockholm
in die Zeitzone des Benutzers.http://php.net/manual/en/function.date.php
Eine Liste der unterstützten Zeitzonen finden Sie unter http://php.net/manual/en/timezones.php
quelle
Vielen Dank Jungs für eure schnellen Kommentare.
Dies ist, was ich jetzt verwenden werde. Posten Sie die Funktion hier, damit jemand sie verwenden kann.
Melden Sie, wenn Sie Korrekturen finden.
quelle
Ein weiterer schneller Weg:
quelle
Wenn Sie den Zeitzonenversatz erhalten können, können Sie ihn einfach zum aktuellen Zeitstempel hinzufügen und dann mit der Funktion gmdate die Ortszeit abrufen .
quelle
Dies sollte funktionieren (nicht getestet, also YMMV). Dabei wird die aktuelle Zeitzone des Skripts gespeichert, in die vom Benutzer angegebene Zeitzone geändert, der Wochentag von der
date()
Funktion zum angegebenen Zeitstempel abgerufen und die Zeitzone des Skripts auf den ursprünglichen Wert zurückgesetzt.Möglicherweise haben Sie jedoch einige Abenteuer mit Zeitzonen-IDs.
quelle
"Wochentag" ist eigentlich etwas, das Sie direkt von der Funktion php date () mit dem Format "l" bzw. "N" erhalten können. Schauen Sie sich das Handbuch an
edit: Sorry, ich habe die Beiträge von Kalium nicht richtig gelesen, das hat er schon erklärt. Mein Fehler.
quelle
Check-Datum ist Montag oder Sonntag, bevor Sie letzten Montag oder letzten Sonntag bekommen
quelle
Basierend auf einer der anderen Lösungen mit einem Flag zum Wechseln zwischen Wochen ab Sonntag oder Montag
quelle
Standardmäßige buchstabenbasierte Darstellungen von Datumsteilen sind großartig, außer dass sie nicht so intuitiv sind. Der viel bequemere Weg besteht darin, grundlegende Abstraktionen und eine Reihe spezifischer Implementierungen zu identifizieren. Außerdem können Sie mit diesem Ansatz von der automatischen Vervollständigung profitieren.
Da es sich hier um Datumsangaben handelt, erscheint es plausibel, dass die grundlegende Abstraktion ist
ISO8601DateTime
. Eine der spezifischen Implementierungen ist die aktuelle Datums- und Uhrzeitangabe, die Sie benötigen, wenn a eine Anforderung an Ihr Backend stellt, daherNow()
Klasse. Die zweite, die für Sie von Nutzen ist, ist eine auf eine bestimmte Zeitzone angepasste Datums- und Uhrzeitangabe. Es überrascht nicht, dass es heißtAdjustedAccordingToTimeZone
. Und schließlich benötigen Sie einen Wochentag in der Zeitzone eines verstrichenen Datums: Dafür gibt es eineLocalDayOfWeek
Klasse. Der Code sieht also wie folgt aus:Weitere Informationen zu diesem Ansatz finden Sie hier .
quelle
quelle