我正在将“dmY”格式转换为“Ymd”
目前,我正在使用此代码
$dp_date = '13-12-1901';
$formated_date = date("Y-m-d",strtotime($dp_date));
但不适用于 14-12-1901 之前的日期,并且在此日期“13-12-1901”作为输入之后可以正常工作。
这里有什么问题?以及如何对 1900 年之前的日期或 14-12-1901 之前的日期进行这种格式化?
这是一个已知的限制Unix timestamp
。
如 php.net 中所述:
strtotime()
该函数期望得到一个包含英文日期格式的字符串,并将尝试将该格式解析为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数),相对于现在给出的时间戳,或如果没有提供现在的当前时间。
顺便说一句,如果你想做的只是替换的位置,d
你Y
可以用字符串操作来做到这一点。
更新
strtotime() 的范围限制在格林威治标准时间 1901 年 12 月 13 日星期五 20:45:54 和格林威治标准时间 2038 年 1 月 19 日星期二 03:14:07 之间;尽管在 PHP 5.1.0 之前,此范围在某些操作系统 (Windows) 上被限制在 01-01-1970 到 19-01-2038。
@MarkBaker https://stackoverflow.com/a/2872094/998096
他建议“使用 PHP 的日期时间对象,它可以处理更广泛的日期”。