9

我正在使用 PHP 和 jQuery 构建一个交互式时间线,它需要显示 1500 年到 2020 年之间的日期。我通常strtotime在处理日期时使用 PHP 的函数,但它不适用于 1900 年之前的日期。

日期将来自 MySQL 数据库,并被格式化为诸如“ January 31, 1654”之类的字符串(这可能不是理想的格式,但我无法更改它们的存储方式)。我正在使用 PHP 来解析日期,基本上将它们转换为像素值,这些像素值决定了它们在时间轴上的显示位置。

解析这些历史日期的最简单方法是什么?

4

2 回答 2

9

这里的DateTime课程可能会有所帮助(引用):

日期的每个组成部分(例如年份)在内部存储为 64 位数字,因此支持所有可以想象的日期(包括负年份)。


但请注意:

  • 它只存在于 PHP >= 5.2
  • 并且几种方法只存在于 PHP >= 5.3

所以:如果您在 PHP 5.3 上开发并希望您的软件与 PHP 5.2 兼容,请注意您使用的方法


另一个解决方案(特别是,如果在您的应用程序中使用 Zend Framework)将是Zend_Date组件(引用):

尽管 PHP 5.2 文档声明,“时间戳的有效范围通常是从 1901 年 12 月 13 日星期五 20:45:54 GMT 到 2038 年 1 月 19 日星期二 03:14:07 GMT” Zend_Date,在帮助下支持几乎无限的范围BCMath 扩展的

于 2010-03-15T18:12:56.133 回答
0

使用精彩的碳库,过去的日期不是问题:

$date = Carbon::now();
$date->subCenturies(23);
echo $date->format('Y-m-d');
  // -0282-03-15

这适用于人类存在的日期。对于其他一切,使用日期(日期和月份,在 AC/BC 规模上设置)没有多大意义。

于 2018-03-15T12:29:30.663 回答