如何在PHP中使用1900年之前的日期?

时间:2010-03-15 18:09:17

标签: php date unix-timestamp

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

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

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

2 个答案:

答案 0 :(得分:9)

此处的DateTime课程可能有所帮助(quoting):

  

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


但请注意:

  • 它仅存在于PHP> = 5.2
  • PHP> = 5.3
  • 中只存在几种方法

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


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

  

虽然PHP 5.2文档说明了,“The   时间戳的有效范围是   通常来自1901年12月13日星期五   格林威治标准时间20:45:54到2038年1月19日星期二   03:14:07 GMT,“ Zend_Date支持a   几乎无限的范围,在帮助下   BCMath扩展

答案 1 :(得分:0)

使用精彩的Carbon Library,过去的日期不是问题:

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

这适用于人类出现的日期。对于其他所有事情,使用日期(日期和月份,在AC / BC等级上设置)并没有多大意义。