gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 01:21:49 25 4
gpt4 key购买 nike

尝试在标准 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。

有解释吗?

最佳答案

来自 the PyEphem home page :

PyEphem uses a simple floating point number to represent the date and time inside of its astronomy routines.

浮点精度总是带来某种程度的近似。我认为这就是您在示例中看到的内容。

编辑

经过更多挖掘,在这种情况下它没有捕捉到十分之一秒的原因是 ephem ignores the microseconds从日期时间创建 ephem.Date 时。看起来版本 3.7.5.2 中有针对此问题的修复

回答问题

Isn't python double precision float precise enough to catch at least tenths of seconds in that case?

绝对是!

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'

关于python - Pyephem - datetime.datetime 和 ephem.Date 之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20698848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com