Ersten Wochentag in PHP erhalten?

Lesezeit: 5 Minuten

Ersten Wochentag in PHP erhalten
Iggy Mama

Ein Datum gegeben MM-dd-yyyy Format, kann mir jemand helfen, den ersten Tag der Woche zu bekommen?

  • 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

Ersten Wochentag in PHP erhalten
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

1646631850 772 Ersten Wochentag in PHP erhalten
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 haben DateTime 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

1646631850 411 Ersten Wochentag in PHP erhalten
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 haben DateTime 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.

963270cookie-checkErsten Wochentag in PHP erhalten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy