我四处寻找,但找不到一个能解决我问题的答案。你知道吗
我使用的是python3.7,我需要将一系列十进制数转换成%Y-%m-%d %H:%M:%S
形式的datetime对象。在这样做时,我需要考虑一个原点,例如:
t = 0.000000
等于2016-06-25 00:00:00
t = 0.010417
等于?你知道吗
等等。我知道在我的十进制时间里,整数部分是天,小数部分是天的分数。你知道吗
我用Rhere找到了答案。我还认为我可能需要使用类方法date.fromordinal(ordinal)
或类似的方法,但我不知道怎么做。你知道吗
这就是我迄今为止所尝试的:
例如t = 1.010416
import datetime as DT
from datetime import timedelta
day = int(x)
datetime_object = DT.datetime.strptime("2016-06-25 00:00:00", '%Y-%m-%d %H:%M:%S')
python_datetime = DT.datetime.fromordinal(day) + timedelta(days=datetime_object.day-1)
我得到:
datetime.datetime(1, 1, 25, 0, 0)
但我不能加上2016年和月份。另外,对于int(t) = 0
的每种情况,我得到:
ValueError: ordinal must be >= 1
非常感谢你的回答
考虑到我对其他答案的评论,这里只留下一个明确的答案:
该代码产生以下输出:
timedelta
将其数据存储为以下格式:(DAYS, SECONDS)
,因此您可以轻松地计算它:将返回:
datetime.datetime(2016, 6, 27, 8, 21, 56)
然后可以使用以下函数将其转换为字符串:
datetime.datetime.strftime(current_time, '%Y-%m-%d %H:%M:%S')
'2016-06-27 08:21:56'
编辑1:不必按天秒构建时间增量,只需使用float days作为参数(多亏了accdias!)地址:
dt = datetime.timedelta(days=t)
相关问题 更多 >
编程相关推荐