Hallo Forum,
ich dachte immer, dass "Y" und "y" bei strtotime() gleichermaßen gehen? Ich kann mir folgenden Unterschied nicht erklären:
<?php
// mktime(hour, min, sec, month, day, year);
$startTime = mktime(10, 30, 0, 12, 15, 2017); // 15.12.2017 10:30:00 Uhr
$endTime = mktime(10, 30, 0, 01, 20, 2018); // 20.01.2018 10:30:00 Uhr
$neuesDatumTimestamp = $startTime;
echo ("Ausgabe 1:<br>");
$dayAdd = 0;
while (strtotime(date("d.m.Y",$neuesDatumTimestamp)) < strtotime(date("d.m.Y",$endTime))) {
$myTag = date('d', strtotime('+'.$dayAdd.' day', $startTime));
$myMonat = date('m', strtotime('+'.$dayAdd.' day', $startTime));
$myJahr = date('Y', strtotime('+'.$dayAdd.' day', $startTime));
$neuesDatum = $myTag.".".$myMonat.".".$myJahr;
$neuesDatumTimestamp = strtotime($neuesDatum);
echo ($neuesDatum."<br>");
$dayAdd ++;
}
$startTime = mktime(10, 30, 0, 12, 15, 2017); // 15.12.2017 10:30:00 Uhr
$endTime = mktime(10, 30, 0, 01, 20, 2018); // 20.01.2018 10:30:00 Uhr
$neuesDatumTimestamp = $startTime;
echo ("<br><br>Ausgabe 2:<br>");
$dayAdd = 0;
while (strtotime(date("d.m.y",$neuesDatumTimestamp)) < strtotime(date("d.m.y",$endTime))) {
$myTag = date('d', strtotime('+'.$dayAdd.' day', $startTime));
$myMonat = date('m', strtotime('+'.$dayAdd.' day', $startTime));
$myJahr = date('Y', strtotime('+'.$dayAdd.' day', $startTime));
$neuesDatum = $myTag.".".$myMonat.".".$myJahr;
$neuesDatumTimestamp = strtotime($neuesDatum);
echo ($neuesDatum."<br>");
$dayAdd ++;
}
$startTime = mktime(10, 30, 0, 12, 15, 2017); // 15.12.2017 10:30:00 Uhr
$endTime = mktime(10, 30, 0, 01, 25, 2018); // 20.01.2018 10:30:00 Uhr
$neuesDatumTimestamp = $startTime;
echo ("<br><br>Ausgabe 3:<br>");
$dayAdd = 0;
while (strtotime(date("d.m.y",$neuesDatumTimestamp)) < strtotime(date("d.m.y",$endTime))) {
$myTag = date('d', strtotime('+'.$dayAdd.' day', $startTime));
$myMonat = date('m', strtotime('+'.$dayAdd.' day', $startTime));
$myJahr = date('Y', strtotime('+'.$dayAdd.' day', $startTime));
$neuesDatum = $myTag.".".$myMonat.".".$myJahr;
$neuesDatumTimestamp = strtotime($neuesDatum);
echo ($neuesDatum."<br>");
$dayAdd ++;
}
Ausgaben:
Ausgabe 1:
15.12.2017
16.12.2017
17.12.2017
...
20.01.2018
Ausgabe 2:
15.12.2017
16.12.2017
17.12.2017
18.12.2017
19.12.2017
20.12.2017
Ausgabe 3:
15.12.2017
16.12.2017
17.12.2017
...
25.01.2018
Ausgabe 1 ist korrekt.
Ausgabe 2 mag auch korrekt sein, ist aber für mich unerwartet 😉
Ausgabe 3 sieht korrekt aus, ist aber aufgrund von Ausgabe 2 für mich unerwartet…
Kann mir einer erklären, warum
Ausgabe 2 mit "y" und 20.01.2018 bereits am 20.01.2017 abbricht und
Ausgabe 3 mit "y" und 25.01.2018 nicht abbricht, sondern bis zum 25.01.2018 durchläuft?
Pit