大家好,有没有办法将日期 0001-01-1 转换为时间格式?我试图使用php函数strtotime("0001-01-01")
,但它返回false。
我的目标是计算从日期开始的日期: 0001-01-01 : 2011-01-01 。
答案 0 :(得分:1)
使用DateTime类。 strtotime返回一个时间戳,在你的情况下,它将超出int bounds。
答案 1 :(得分:1)
正如Ignacio Vazquez-Abrams评论的那样,在公历采用之前的日期会有问题:
简而言之,你必须准确地知道“1月1日公元1”对于你的问题有什么意义。天文学家使用Julian Day Number(与朱利安历法不完全相关)来避免这个问题。
编辑:当事情声称使用“预感格里高利历”时,您甚至必须小心。这是假设是向后延伸的公历,但是在Symbian上,1600年之前观察旧的闰年规则(即Symbian的“1200年”不是闰年,在公历中,在公历中它是。)
答案 2 :(得分:0)
我担心它不会工作,因为strtotime将字符串更改为时间戳,其最低值为0,而它在1970-01-01 ...不能低于...
date('Y-m-d', 0);
答案 3 :(得分:0)
从手册:
如果以两位数格式指定年份编号,则00-69之间的值将映射到2000-2069和70-99到1970-1999。有关32位系统的可能差异,请参阅下面的注释(可能的日期可能会在2038-01-19 03:14:07结束)。
您可能需要'DateTime::createFromFormat'
代替this。
另请注意,在32位版本的PHP上,您不能低于1901。
答案 4 :(得分:0)
你不能这样做。以下是如何执行此操作的一种选择。
$date1= "2011-01-01";
$date2 = "2011-10-03";
//calculate days between dates
$time_difference = strtotime($date2) - strtotime($date1);
现在你可以在几秒钟内获得时差,你可以得到几天,几小时,几分钟,几秒钟。
答案 5 :(得分:-1)
你不能使用strtotime函数,因为这个函数返回时间戳,时间戳从1970年开始,所以我建议你以不同的方式搜索