Tamam, bir süre için bu işe yaramaz sonra, ben date('U')
ile çözüm çekilme ve yerine bunu kullanmanızı öneririm:
function isValidTimeStamp($timestamp)
{
return ((string) (int) $timestamp === $timestamp)
&& ($timestamp <= PHP_INT_MAX)
&& ($timestamp >= ~PHP_INT_MAX);
}
Bu kontrol tek gerçek dönecektir eğer $timestamp
bir string ve sadece basamak ve isteğe bağlı eksi karakteri oluşur verilmedi. Sayı, aynı zamanda, bir tamsayı bit aralığı içinde olmak zorundadır (EDIT, actually unneeded as shown here).
var_dump( isValidTimeStamp(1) ); // false
var_dump( isValidTimeStamp('1') ); // TRUE
var_dump( isValidTimeStamp('1.0') ); // false
var_dump( isValidTimeStamp('1.1') ); // false
var_dump( isValidTimeStamp('0xFF') ); // false
var_dump( isValidTimeStamp('0123') ); // false
var_dump( isValidTimeStamp('01090') ); // false
var_dump( isValidTimeStamp('-1000000') ); // TRUE
var_dump( isValidTimeStamp('+1000000') ); // false
var_dump( isValidTimeStamp('2147483648') ); // false
var_dump( isValidTimeStamp('-2147483649') ); // false
PHP_INT_MAX'tan için onay sizin dize date
tarafından doğru kullanılabilir olması sağlamak ve seviyor, örneğin Bu * olmaz sağlar:
echo date('Y-m-d', '2147483648'); // 1901-12-13
echo date('Y-m-d', '-2147483649'); // 2038-01-19
(*) Note: I'm not 100% sure, the bit range corresponds with what date can use though sup>