python - 使用python将Julian日期转换为正常日期和时间
问题描述
我想将儒略日期转换为正常的日期和时间。我的开始年份是 2010.1.1 00:00:00,我正在处理日期的代码部分如下:
import astropy.time
import dateutil.parser
import datetime
from datetime import datetime
dt = dateutil.parser.parse('2010.01.01')
time1 = astropy.time.Time(dt)
jd=time1.jd
print(jd)
datetime_start=266065955.675 #seconds from 2010.1.1 00:00:00
datetime_startjd=(datetime_start/24./60./60.)+jd
print(datetime_startjd)
from __future__ import print_function, division
from PyAstronomy import pyasl
print("The decimal year %10.5f correspond to " % datetime_startjd+ \
pyasl.decimalYearGregorianDate(datetime_startjd, "yyyy-mm-dd hh:mm:ss"))
print(" ... or equivalently (y, m, d, h, m, s, ms): ", \
pyasl.decimalYearGregorianDate(datetime_startjd, "tuple"))
我收到错误消息:
ValueError:2458276 年超出范围
有人可以建议我使用准确的代码或方法将这个儒略日期转换为正常的日期和时间吗?
解决方案
我使用以下代码找到了我需要的东西,以防有人想使用它:
import numpy as np
from astropy.time import Time
times = [ '2010-01-01T00:00:00']
t = Time(times, format='isot', scale='utc')
juliant=t.jd
print(juliant)
datetime_start=265633590.42
datetime_startjd=(datetime_start/24./60./60.)+juliant
print(datetime_startjd)
time2=Time('2458271.96285208',format='jd')
time3=time2.iso
print(time3)
datetime_length=1.0800000429153442
cover_time=((datetime_start+datetime_length)/24./60./60.)+juliant
print(cover_time)
cover_time=Time(cover_time,format='jd')
cover_time=cover_time.iso
print(cover_time)
推荐阅读
- python - 有没有办法从存储的 user_id 中获取 user_id 的用户名,即使它们不在同一台服务器上?
- java - 如何在这个循环链表中修复这个错误?(联合法)
- php - 在页面之间的php表单上输入值
- python - 有没有办法在指定的行启动 DictReader?
- unity3d - Log4Net with Unity:appender 文件保存在哪里?
- c++ - 更改 h 值的颜色
- cplex - 如何获得更好的不可行解决方案 cplex?
- c - 带头的通用结构的实现
- c# - 如何添加自动完成
与使用 Xamarin 的城市 - python - 在 Python 中的输入文件中查找最常见的多词