Kullanıcıların bazı tarihleri sağlayan bir site var, ama onlar 12 Nisan 2099 gibi yıl girerseniz, o zaman ben geçmişte (1969) tarih olsun. Bunu nasıl kontrol ve varsayılan maksimum güvenli bir tarih geçerlidir?
teşekkür ederim.
$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
DateTime yerine Tamsayıların damgası depolamak için kullandığı ne emin değil. Ama Tamsayılar PHP_INT_MAX için platformun değeri ile sınırlıdır. Sen (timestamp için) 'U' ile DateTimeBiçimlendirme ve geçirmeden ile test date() yapabilirsiniz:
echo date('Y-m-d H:i:s', $dt->format('U')); // 1962-12-06 17:30:44
Fark nasıl DateTime Doğru zaman damgası döndürür ama date onunla çalışmak edemez:
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
);
Sen mktime işlevini kullanabilirsiniz. Onun için Fri, 13 Dec 1901 20:45:54 GMT bir tarih sağlanırsa Tue, 19 Jan 2038 03:14:07 GMT bunu döndürür başka çağdan saniye # döndürür false.
var_dump(mktime(0, 0, 0, 1, 19, 2038)); // int(2147472000)
var_dump(mktime(0, 0, 0, 1, 20, 2038)); // bool(false)