好吧,在摆弄了一段时间之后,我撤回了解决方案,
date('U')建议改用此解决方案:function isValidTimeStamp($timestamp){ return ((string) (int) $timestamp === $timestamp) && ($timestamp <= PHP_INT_MAX) && ($timestamp >= ~PHP_INT_MAX);}如果给定的
$timestamp是 字符串 并且仅由数字和可选的减号组成,则此检查将仅返回true 。
var_dump( isValidTimeStamp(1) ); // falsevar_dump( isValidTimeStamp('1')); // TRUEvar_dump( isValidTimeStamp('1.0') ); // falsevar_dump( isValidTimeStamp('1.1') ); // falsevar_dump( isValidTimeStamp('0xFF') ); // falsevar_dump( isValidTimeStamp('0123') ); // falsevar_dump( isValidTimeStamp('01090') ); // falsevar_dump( isValidTimeStamp('-1000000') ); // TRUEvar_dump( isValidTimeStamp('+1000000') ); // falsevar_dump( isValidTimeStamp('2147483648') ); // falsevar_dump( isValidTimeStamp('-2147483649') ); // false检查PHP_INT_MAX是为了确保您的字符串可以被诸如此类正确使用
date,例如,它可以确保不会发生这种情况*:
echo date('Y-m-d', '2147483648'); // 1901-12-13echo date('Y-m-d', '-2147483649'); // 2038-01-19在64位系统上,整数当然大于该整数,并且对于“ 2147483648”和“
-2147483649”,该函数将不再返回false,而对于相应的较大数字,该函数将不再返回false。
(*) 注意:我不确定100%,虽然位范围与可以使用的日期相对应



