python - 转换日期 (YYYY MM DD HH :MM:SS) to Decimal Day (YYYY MM DD. ddddd)

标签 python date decimal astronomy

我构建了一个脚本,它获取望远镜观测的日期和时间,并将其转换为带小数点的日期。该脚本还采用一半的曝光时间并将其添加到小数日,以便我可以获得最准确的天文计算。然后提交给小行星中心,小行星中心只接受年月日的观测时间。XXXXX 最精确的方法是5位小数点来做这个?这是我目前使用的方式,是的,它非常困惑,但它确实让我得到了小数日。有时它在时间转换中会偏移一秒。

expmpc = float.("10")
utcstartmpc = "05:45:19.03"
datempc = "2015-02-14"


ddexposure = expmpc/(60.0*60.0*24.0)
ddexposure = round(ddexposure, 5)
seconds = int(utcstartmpc[6:8]) / 60.0
minutes = (int(utcstartmpc[3:5]) + seconds) / 60
hours = (int(utcstartmpc[:2]) + minutes) / 24
hours = round(hours, 5)
expadd = str(hours + ddexposure)
datempc = datempc.replace("-", " ")
utcmpc = "C%s%s" % (datempc, expadd[1:])
utcmpc = utcmpc.ljust(17, "0")

如您所见,这非常困惑,涉及对大量数据进行四舍五入,我相信我会因四舍五入而失去准确性。代码的完成结果留下了这样的时间: C2015 02 14.23986

有没有更好的模块?

谢谢你的帮助。

最佳答案

这是使用更多内置时间/日期模块的东西(我认为它可以满足您的需求):

import time
import datetime

def my_date_converter(date_in):
    parse_str, _ = date_in.split(".")
    date_str, time_str = parse_str.split(" ")
    parsed_time = time.strptime(time_str, "%H:%M:%S")
    total_seconds = datetime.timedelta(hours=parsed_time.tm_hour,minutes=parsed_time.tm_min,seconds=parsed_time.tm_sec).total_seconds()
    seconds_in_day = 86400.0
    decimal_seconds = total_seconds / seconds_in_day
    utcmpc = "C%s%s" % (date_str.replace("-", " "), str(round(decimal_seconds, 5))[1:])
    utcmpc = utcmpc.ljust(17, "0")
    return utcmpc


def main():
    to_convert = "2015-02-14 05:45:19.03"
    converted = my_date_converter(to_convert)
    print "%s => %s" % (to_convert, converted)

if __name__ == '__main__':
    main()

示例输出:2015-02-14 05:45:19.03 => C2015 02 14.23980

关于python - 转换日期 (YYYY MM DD HH :MM:SS) to Decimal Day (YYYY MM DD. ddddd),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29683684/

相关文章:

python - ML - 特征选择后获取特征名称 - SelectPercentile,python

javascript获取上周的第一天和最后一天

date - 测试 Web 应用程序时设置自定义日期

python - Django DecimalField 在保存时生成 "quantize result has too many digits for current context"错误

ruby-on-rails - 如何让变量保留 2 位小数

python - Tkinter 的奇函数行为

python - _transform() 接受 2 个位置参数,但给出了 3 个

Python 格式十进制接近零

python - 如何从 Reddit 子版 block 中获取随机帖子(praw)

php - 根据另一个下拉列表中的所选值限制日期