【发布时间】:2022-01-03 21:53:38
【问题描述】:
我只想要第一个和最后一个值,我的意思是 2021-01-30 15:51:47 -2.0665672163030704e-06 和 2021-01-30 15:51:51 -1.0708335011265263e-05 这个代码还提供每个秒,但我希望每分钟都有结果。
from datetime import datetime, timedelta
from astropy.time import Time
start_date_time = datetime(2021, 1, 30, 15, 00, 00)
end_date_time = datetime(2021,1, 30,16,00,00)
time_diff = int((end_date_time -
start_date_time).total_seconds())
for i in range(time_diff):
day = (start_date_time + timedelta(0, i))
dt = Time(day)
jd =dt.jd
# print(day,jd)
eph = swe.calc_ut(jd,2)[0][3]
if eph < 0:
print(dt,eph)
Output -
2021-01-30 15:51:47 -2.0665672163030704e-06
2021-01-30 15:51:48 -4.222647236587894e-06
2021-01-30 15:51:49 -6.384221081802716e-06
2021-01-30 15:51:50 -8.565878651309763e-06
2021-01-30 15:51:51 -1.0708335011265263e-05
【问题讨论】:
-
你可以放 [0, time_diff] 而不是 range(time_diff) 它会给你第一个和最后一个值。由于 range 为您提供从 0 到 time_diff 的范围。
-
澄清一下,您只想要条件为真的输出 (
eph < 0)?要迭代分钟,您只需在代码中使用timedelta(minutes=i)。 -
是的,我只想在条件为真(eph
-
您可以将它们附加到一个列表中,而不是只打印结果,然后最后获取该列表的第一个和最后一个元素。
-
谢谢@MrFuppes 我是绝对的初学者,我正在练习自己......
标签: python datetime date-range timedelta astropy