支持所有现有日期的最佳解决方法是什么?

时间:2011-01-24 作者:edelwater

我想制作一个日志,每个日期都有1个或多个日志帖子,例如:

Januari 24 Year 41 : Roman Emperor Caligula was murdered by Cassius Chaerea and the disgruntled Praetorian Guards. Caligula\'s uncle Claudius was proclaimed emperor in his place.

Januari 1 Year 153 BC : Roman consuls begin their year in office.

Februari 1 Year 2038 : Humans survived

如果我想支持URL黑客攻击,在WordPress中做这件事的最佳方式是什么?

p、 我首先想到的是美国的自定义字段+自定义帖子+自定义分类法,但也许有更好的选择依赖于当前的日期系统。

相关:http://en.wikipedia.org/wiki/Unix_time#Representing_the_number

2 个回复
最合适的回答,由SO网友:editor 整理而成

Unix时间定义为自“Unix纪元”(1970年1月1日00:00:00 UTC)以来的秒数。

它可以向前和向后工作——所以从技术上讲,你应该不会有麻烦,可以一直追溯到第一年的1月1日,但是数字会是负数,而且非常大。

编辑:至少根据一项基本测试,PHP似乎无法轻松处理这些日期。二者都echo $time = strtotime("January 1, 1");echo $time = strtotime("January 1, 0001"); 导致978325200.

我认为,正如你所想,最好的选择是分类。您是否想处理自定义类别可能是一个偏好问题,但我怀疑使用您列出的名称的普通类别会很好地工作。

SO网友:Rarst

不确定WordPress在保存帖子时关于处理日期的详细信息,但它将帖子的日期存储在数据库中datetime 类型,根据MySQL The DATETIME, DATE, and TIMESTAMP Types 仅具有范围1000-01-01 00:00:00 to 9999-12-31 23:59:59 所以不会回到你想要的程度。

因此,最好将日期单独存储(自定义字段有意义)为字符串或时间戳。

而且strtotime() 通常非常棒,但也有其自身的局限性:

时间戳的有效范围通常为Fri, 13 Dec 1901 20:45:54 UTC to Tue, 19 Jan 2038 03:14:07 UTC. (这些日期对应于32位有符号整数的最小值和最大值。)此外,并非所有平台都支持负时间戳,因此您的日期范围可能被限制为不早于Unix纪元。这意味着,例如1970年1月1日之前的日期将无法在Windows、某些Linux发行版和其他一些操作系统上使用。PHP 5.1.0和更新版本克服了这一限制。

总的来说,我怀疑对于这样极端的日期,您需要编写自己的代码或找到一些第三方现成的代码。

结束

相关推荐