我正在使用PHP和jQuery构建一个交互式时间轴,需要显示1500到2020之间的日期。我在处理日期时通常使用PHP的strtotime
函数,但它不适用于1900年以前的日期。
日期将来自MySQL数据库,格式为字符串,例如“January 31, 1654
”(这可能不是理想的格式,但我无法更改它们的存储方式)。我使用PHP来解析日期,基本上将它们转换为像素值,确定它们在时间轴上的显示位置。
解析这些历史日期的最简单方法是什么?
答案 0 :(得分:9)
日期的每个组成部分(例如年份)是 内部存储为64位数字 所有可以想象的日期(包括 负面年份。支持。
但请注意:
所以:请注意您正在使用哪些方法,如果您正在开发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等级上设置)并没有多大意义。