Versuchen Sie, die DateTime
Klassen
$dt = new DateTime('2099-01-01');
$dt->setTime(23,59);
$dt->add(new DateInterval('P10D'));
echo $dt->format('Y-m-d H:i:s'); // 2099-01-11 23:59:00
nicht sicher, was Datetime verwendet intern den Zeitstempel zu speichern, anstatt ganzer Zahlen. Aber Ganzzahlen sind durch den Wert Ihrer Plattform für PHP_INT_MAX
begrenzt. Sie können dies testen mit der Formatierung der Datetime mit ‚U‘ (für Zeitstempel) und Übergabe an date()
:
echo date('Y-m-d H:i:s', $dt->format('U')); // 1962-12-06 17:30:44
Beachten Sie, wie DateTime
den richtigen Zeitstempel gibt aber date
kann es nicht funktionieren:
var_dump(
$dt->format('U'), // 4071855540
date('U', $dt->format('U')), // -223111756
PHP_INT_MAX, // 2147483647
PHP_INT_MAX+1, // -2147483648
date('Y-m-d H:i:s', PHP_INT_MAX), // 2038-01-19 04:14:07
date('Y-m-d H:i:s', PHP_INT_MAX+1) // 1901-12-13 21:45:52
);
Welche, um mehr Wörter zu verwenden, bedeutet "nicht mit Zeitstempeln arbeiten." :) –
Dank Gordon, ich versuche, meinen Kopf um diese Datetime-Klasse zu bekommen. – user187580
@ user187580 für den Fall, dass Sie mit Klassen unwohl fühlen, können Sie auch die verfahrenstechnischen Äquivalente verwenden. Zum Beispiel 'date_create',' date_format', usw. – Gordon