我打算用Python构建一个应用程序,它需要广泛地处理BC日期(在DB中存储和检索,进行计算)。大多数日期都有各种各样的不确定性,比如“公元前2000年左右”。在
我知道Python的datetime库只处理公元1年的日期
到目前为止我只找到了FlexiDate。还有其他选择吗?在
编辑:最好的方法可能是将它们存储为字符串(基本数据类型为String),并且——正如建议的那样——有一个自定义的datetime类,它可以对它进行一些数值处理。对大多数人来说,日期似乎只有一年。有一些有趣的问题需要解决,如“公元前500年早期”、“公元前1600年至1500年之间”、“公元前1800年以前”。在
天文学家和航空航天工程师必须处理BC日期和一条连续的时间线,所以这就是谷歌搜索的上下文。在
Astropy的^{} 类将为您工作(甚至比您希望的更加精确和完整)。
pip install astropy
你就在路上了。在如果你自己掷骰子,你应该复习一下Vallado's chapter on dates中的一些公式。有很多模糊的因素需要转换日期从朱利安到格里高利等
NASA Spice函数可以非常好地处理BC,并且可以从多种格式进行转换。在这些示例中,
begin_date
和end_date
包含与输入日期相对应的超过J2000 epoch的TDB秒数:Documentation of str2et(), Input format documentation,以及 Leapsecond kernel files可通过NASA Spice主页获得。在
从datetime或其他时间方法转换为spice很简单:
^{pr2}$其他功能包括:TIMOUT,TPARSE转换到和从J2000 epoch秒。在
这些函数在python中通过spiceypy提供,例如通过
pip3 install spiceypy
安装这是一个有趣的问题,这样的类还不存在似乎很奇怪(re@joel Cornett comment)如果你只在几年内工作,它会简化你的类来处理整数而不是日历日期-你可以使用一个字典,其中文本描述(公元前10年)和整数值(-10) 编辑:我在谷歌上搜索了这个:
http://code.activestate.com/lists/python-list/623672/
相关问题 更多 >
编程相关推荐