Pyephem - datetime.datetime和ephem.Date之间的时差

时间:2013-12-20 08:00:16

标签: python datetime pyephem

尝试在标准python datetime 例程datetime.datetime和Pyphem例程之间进行转换 ephem.Date 有时会有(除了预期的截断)一个范围内的特殊差异第二

尝试示例代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ephem
import datetime

now_datetime = datetime.datetime.now()
now_ephem = ephem.Date(now_datetime)
print "Datetime: ", now_datetime
print "Ephem   : ", now_ephem

重复调用的输出类似于:

thl@thl-lap-001:$ ./timedifference.py
Datetime:  2013-12-20 08:28:11.536814
Ephem   :  2013/12/20 08:28:11
thl@thl-lap-001:$ ./timedifference.py
Datetime:  2013-12-20 08:28:16.088484
Ephem   :  2013/12/20 08:28:15

最后两行在Datetim中显示16.somethig秒,转换为15秒到ephem.Date。

有解释吗?

1 个答案:

答案 0 :(得分:3)

来自the PyEphem home page

  

PyEphem使用一个简单的浮点数来表示其天文例程中的日期和时间。

浮点精度总是带来一定程度的近似。我认为这就是你在你的例子中所看到的。

修改

在进行更多挖掘时,在这种情况下它没有捕获十分之几秒的原因是从日期时间创建ephem.Date时的ephem ignores the microseconds。看起来有一个修复版本3.7.5.2

回答问题

  

在这种情况下,python双精度浮点数是否足够精确以至少捕获十分之几秒?

绝对是最好的!

import ephem
'%f' % ephem.Date('2013/12/20 12:34:56')
=> '41627.024259'
'%f' % ephem.Date('2013/12/20 12:34:56.1')
=> '41627.024260'