Ein Datum gegeben MM-dd-yyyy
Format, kann mir jemand helfen, den ersten Tag der Woche zu bekommen?
Ersten Wochentag in PHP erhalten?
Iggy Mama
Raja Rama Mohan Thavalam
Sehr einfach zu bedienen strtotime
Funktion:
echo date("Y-m-d", strtotime('monday this week')), "\n";
echo date("Y-m-d", strtotime('sunday this week')), "\n";
Es unterscheidet sich ein bisschen über PHP-Versionen hinweg:
Ausgabe für 5.3.0–5.6.6, php7@20140507–20150301, hhvm-3.3.1–3.5.1
2015-03-16
2015-03-22
Ausgabe für 4.3.5 – 5.2.17
2015-03-23
2015-03-22
Ausgabe für 4.3.0 – 4.3.4
2015-03-30
2015-03-29
Vergleich bei Edge-Cases
Relative Beschreibungen wie diese Woche haben ihren eigenen Kontext. Das Folgende zeigt die Ausgabe für diese Woche Montag und Sonntag, wenn es ein Montag oder Sonntag ist:
$date="2015-03-16"; // monday
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";
$date="2015-03-22"; // sunday
echo date("Y-m-d", strtotime('monday this week', strtotime($date))), "\n";
echo date("Y-m-d", strtotime('sunday this week', strtotime($date))), "\n";
Auch hier unterscheidet es sich ein wenig über PHP-Versionen hinweg:
Ausgabe für 5.3.0–5.6.6, php7@20140507–20150301, hhvm-3.3.1–3.5.1
2015-03-16
2015-03-22
2015-03-23
2015-03-29
Ausgabe für 4.3.5 – 5.0.5, 5.2.0 – 5.2.17
2015-03-16
2015-03-22
2015-03-23
2015-03-22
Ausgabe für 5.1.0 – 5.1.6
2015-03-23
2015-03-22
2015-03-23
2015-03-29
Ausgabe für 4.3.0 – 4.3.4
2015-03-23
2015-03-29
2015-03-30
2015-03-29
-
Warum funktioniert das nicht für das Datum 2016-06-05, es gibt die Daten für die nächsten Wochen an.
– Benutzer1642018
26. Juni 2016 um 12:02 Uhr
-
Danke dafür, ich habe diesen Code gerade geändert, damit ich einen optionalen Datumsparameter übergeben kann $dt = $custom_date ? strtotime($custom_date) : time(); $monday = date(“Ymd”, strtotime(‘monday this week’, $dt)); $sonntag = date(“Ymd”, strtotime(‘Sonntag diese Woche’, $dt));
– Ron Michael
4. August 2019 um 2:55 Uhr
-
$monday = strtotime('last monday', strtotime('tomorrow'));
– Lewis Buckley
30. Juli 2013 um 15:04 Uhr
-
this week
funktioniert nicht, wenn Sie immer den vorherigen Wochenbeginn haben müssen, aber der Kommentar von @LewisBuckley tut es.– Schlank
10. Dezember 2013 um 14:11 Uhr
-
Zweites Argument
time()
ist optional, wenn Sie heute angeben möchten.– Wenn nicht
7. Januar 2014 um 12:27 Uhr
-
hat bei mir nicht funktioniert, ich musste eine etwas andere Syntax für YTD, MTD, WTD sehen.
– Ron
8. April 2014 um 0:14 Uhr
-
Diese Antwort führt je nach verwendeter PHP-Version zu inkonsistenten Ergebnissen: 3v4l.org/Z3k4E Die Lösung von @LewisBuckley ist für alle Versionen konsistent: 3v4l.org/Eeh9c
– Chris Baker
25. Juni 2014 um 14:45 Uhr
job3dot5
Halte es einfach :
<?php
$dateTime = new \DateTime('2020-04-01');
$monday = clone $dateTime->modify(('Sunday' == $dateTime->format('l')) ? 'Monday last week' : 'Monday this week');
$sunday = clone $dateTime->modify('Sunday this week');
?>
Quelle : PHP-Handbuch
NB: Wie einige Benutzer kommentierten, wird der $dateTime-Wert geändert.
-
Edit: Tippfehler oder unbekannte Syntax? woher kommt das \?
$dateTime = new \DateTime('2012-05-14');
– Sliq
14. Mai 2012 um 13:56 Uhr
-
Ich mache dies, um Konflikte mit einem möglichen automatisch geladenen Objekt Ihrer Anwendung zu vermeiden. Das ist wie absoluter Pfad oder relativer Pfad.
– job3dot5
14. Mai 2012 um 14:53 Uhr
-
@Panique – die “unbekannte Syntax” ist die Namespace-Syntax von PHP 5.3. Namensräume ermöglichen es Ihnen, einer Klasse einen Namensraum gefolgt von einem umgekehrten Schrägstrich voranzustellen. Hier verwendet er es ohne Namensraum, um den Kern zu spezifizieren
DateTime
Klasse, was bedeutet, dass der Code auch dann funktioniert, wenn Sie eine andere Klasse aufgerufen habenDateTime
im aktuellen Namensraum.– Spudley
14. Mai 2012 um 18:41 Uhr
-
Ist der Tagesname immer auf Englisch?
– Marwelln
27. August 2016 um 17:08 Uhr
-
Teil klonen funktioniert nicht richtig. Sie sollten zuerst klonen und dann den Klonvorgang ausführen, wenn Sie das Original benötigen.
– Farid Movsumov
9. September 2019 um 13:48 Uhr
James Skidmore
$givenday = date("w", mktime(0, 0, 0, MM, dd, yyyy));
Dadurch erhalten Sie den Wochentag des angegebenen Datums selbst, wo 0
= Sonntag und 6
= Samstag. Von dort aus können Sie einfach auf den gewünschten Tag zurückrechnen.
-
Edit: Tippfehler oder unbekannte Syntax? woher kommt das \?
$dateTime = new \DateTime('2012-05-14');
– Sliq
14. Mai 2012 um 13:56 Uhr
-
Ich mache dies, um Konflikte mit einem möglichen automatisch geladenen Objekt Ihrer Anwendung zu vermeiden. Das ist wie absoluter Pfad oder relativer Pfad.
– job3dot5
14. Mai 2012 um 14:53 Uhr
-
@Panique – die “unbekannte Syntax” ist die Namespace-Syntax von PHP 5.3. Namensräume ermöglichen es Ihnen, einer Klasse einen Namensraum gefolgt von einem umgekehrten Schrägstrich voranzustellen. Hier verwendet er es ohne Namensraum, um den Kern zu spezifizieren
DateTime
Klasse, was bedeutet, dass der Code auch dann funktioniert, wenn Sie eine andere Klasse aufgerufen habenDateTime
im aktuellen Namensraum.– Spudley
14. Mai 2012 um 18:41 Uhr
-
Ist der Tagesname immer auf Englisch?
– Marwelln
27. August 2016 um 17:08 Uhr
-
Teil klonen funktioniert nicht richtig. Sie sollten zuerst klonen und dann den Klonvorgang ausführen, wenn Sie das Original benötigen.
– Farid Movsumov
9. September 2019 um 13:48 Uhr
Diese Frage braucht eine gute Terminzeit Antworten:-
function firstDayOfWeek($date)
{
$day = DateTime::createFromFormat('m-d-Y', $date);
$day->setISODate((int)$day->format('o'), (int)$day->format('W'), 1);
return $day->format('m-d-Y');
}
var_dump(firstDayOfWeek('06-13-2013'));
Ausgabe:-
string '06-10-2013' (length=10)
Dabei geht es um Jahresgrenzen und Schaltjahre.
Was meinst du mit dem ersten Tag der Woche? Meinst du So, Mo? Oder meinst du das Datum des ersten Wochentages?
– Jeffrey Hines
13. Dezember 2009 um 21:04 Uhr
Der erste Tag der Woche ist konstant: Es ist Montag (oder möglicherweise Sonntag). Meinen Sie damit, dass Sie das Datum des Montags vor einem bestimmten beliebigen Datum erhalten möchten?
– Jon Cram
13. Dezember 2009 um 21:08 Uhr
Welche Version von PHP – 4 oder 5?
– Jon Cram
13. Dezember 2009 um 21:10 Uhr
das Datum des Sonntags der Woche. php5
– Iggy Ma
13. Dezember 2009 um 21:15 Uhr
Seltsam, er fragt nach a
DateTime
Lösung und die meisten Antworten liefern es nicht. =)– Lin
15. November 2016 um 9:38 Uhr