python-如何在给定时间原点的情况下将日期时间从十进制转换为“%y-%m-%d%H:%M:%S”?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-如何在给定时间原点的情况下将日期时间从十进制转换为“%y-%m-%d%H:%M:%S”?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1437字,纯文字阅读大概需要3分钟。
内容图文
我四处搜寻,但找不到符合我问题的答案.
我正在使用python 3.7,我需要将一系列十进制数字转换为%Y-%m-%d%H:%M:%S形式的datetime对象.这样做时,我需要考虑一个原点,例如:
t = 0.000000等于2016-06-25 00:00:00
t = 0.010417等于…..?
等等.我知道在我的小数时间中,整数部分是自开始以来的天,小数部分是天的分数.
我已经找到了使用R here的答案.我还认为我可能需要使用类方法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
非常感谢您的回答
解决方法:
考虑到我对其他答案的评论,请在此处留下一个明确的答案:
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
>>>
内容总结
以上是互联网集市为您收集整理的python-如何在给定时间原点的情况下将日期时间从十进制转换为“%y-%m-%d%H:%M:%S”?全部内容,希望文章能够帮你解决python-如何在给定时间原点的情况下将日期时间从十进制转换为“%y-%m-%d%H:%M:%S”?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。