![](/img/trans.png)
[英]Convert Twitter New Date Format to Date Time ( %Y-%m-%d %H:%M%S' )
[英]How to convert datetime from decimal to “%y-%m-%d %H:%M:%S” given the time origin?
我做了我的搜索,但我找不到满足我的问题的答案。
我正在使用python 3.7,我需要将一系列十进制数转换为datetime对象,形式为%Y-%m-%d %H:%M:%S
。 在这样做时,我需要考虑一个原点,例如:
t = 0.000000
等于2016-06-25 00:00:00
t = 0.010417
等于.....?
等等。 我知道在我的十进制时间内,整数部分是从开始的一天,小数部分是一天的分数。
我在这里找到了一个答案。 我还认为我可能需要使用类方法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必须> = 1
非常感谢您的回答
只是在这里留下一个明确的答案,考虑到我对其他答案的评论:
from datetime import datetime,timedelta
base_date = datetime(2016, 6, 25)
deltas = (2.34857, 0.010417, 1.010416)
for delta in deltas:
print((base_date + timedelta(delta)).strftime('%Y-%m-%d %H:%M:%S'))
该代码产生以下输出:
>>> from datetime import datetime,timedelta
>>>
>>> base_date = datetime(2016, 6, 25)
>>> deltas = (2.34857, 0.010417, 1.010416)
>>>
>>> for delta in deltas:
... print((base_date + timedelta(delta)).strftime('%Y-%m-%d %H:%M:%S'))
...
2016-06-27 08:21:56
2016-06-25 00:15:00
2016-06-26 00:14:59
>>>
timedelta
以这种格式存储其数据:( (DAYS, SECONDS)
因此您可以轻松地计算它:
import datetime
t = 2.34857
# Full days
days = int(t)
# Part of a day
part_of_day = t - int(t)
seconds = int(part_of_day * 24 * 60 * 60)
# Calculate the time delta
dt = datetime.timedelta(
days=days,
seconds=seconds
)
# Add t-delta to the first day
first_day = datetime.datetime(2016, 6, 25)
current_time = first_day + dt
current_time
将返回:
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:不是用天 - 秒构建timedelta,而是可以使用float days作为参数(感谢accdias!):
dt = datetime.timedelta(days=t)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.