首先,您可以将其转换为这样的
datetime.datetime对象:
>>> import datetime>>> fmt = '%Y.%m.%d'>>> s = '2012.11.07'>>> dt = datetime.datetime.strptime(s, fmt)>>> dtdatetime.datetime(2012, 11, 7, 0, 0)
然后,您可以使用上的方法
datetime来获取所需的内容……除了
datetime没有直接所需的功能之外,因此您需要转换为时间元组
>>> tt = dt.timetuple()>>> tt.tm_yday312
术语“朱利安日”具有几个不同的含义。如果要查找
2012312,则必须间接执行此操作,例如,以下一项。
>>> int('%d%03d' % (tt.tm_year, tt.tm_yday))2012312>>> tt.tm_year * 1000 + tt.tm_yday2012312如果您正在寻找不同的含义,那么应该可以从这里弄清楚。例如,如果您想要“自4713年1月1日起的天数”的含义,并且您有一个要求使用公历年份和年份的公式,则可以在上面插入这两个值。(如果您有一个公式需要格里高利历年,月和日,您甚至不需要执行该
timetuple步骤。)如果您无法确定从那里去哪里,请询问更多详细信息。
如果您没有公式,甚至可能已经有了公式,那么最好的办法就是在PyPI和ActiveState周围查找预先存在的模块。例如,快速搜索出现了一个名为的东西
jdcal。我以前从未见过它,但是可以快速
pipinstall jdcal简短地阅读自述文件,并且能够做到这一点:
>>> sum(jdcal.gcal2jd(dt.year, dt.month, dt.day))2456238.5
这与USN朱利安日期转换器给我的结果相同。
如果您想要整数儒略日,而不是分数儒略日,则必须决定要舍入的方向-朝0,朝负无穷大,将正午舍入到第二天,将正午舍入到偶数天,等等。(请注意,朱利安日期的定义是从4713BC年1月1日中午开始,所以2012年11月7日的一半是2456238,另一半是2456239,只有您知道您想要哪个……例如,朝0舍入:
>>> int(sum(jdcal.gcal2jd(dt.year, dt.month, dt.day)))2456238



