首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TimeStamp至今

TimeStamp至今
EN

Stack Overflow用户
提问于 2018-08-02 17:59:35
回答 2查看 9.1K关注 0票数 3

我正在尝试将时间戳(我不知道它是如何转换)转换为日期时间。

我有这样的输入: 1217099350.0

如果我把它写在Libreoffice (1217099350.0/86400) + 29226上,并将单元格格式化到日期。我有一个正确的输出:

代码语言:javascript
复制
31/07/2018 19:09:10

但如果我在蟒蛇上做这个:

代码语言:javascript
复制
tt = 1217099350.0
tt2 = (tt / 86400.) + 29226.
tt3 = datetime.fromtimestamp(tt2).strftime("%Y-%M-%d %H:%m:%S"
print(tt3)

我有下一个输出:

1970-01-01 : 09:01:52

我的代码有什么问题?

谢谢!致以问候!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-02 18:42:36

伊曼纽尔

更改Python中的Epoch可能是一项很大的工作。在调用LibreOffice之前,对您的datetime.utfromtimestamp时间戳进行一些计算以将它们转换为Posix时间戳可能会更容易一些。

但是,如果你在1970年1月1日前使用时间戳,这是行不通的。

代码语言:javascript
复制
from datetime import datetime
tt = 1217099350.0
tt2 = (tt / 86400.) + 29226.
# At this point tt2 has days since the LibreOffice Epoch.  Below, it
# is converted to seconds since Posix epoch.
tt3 = tt2 - 25569.  # There are 25569 days between LibreOffice and Posix epoch
tt4 = tt3 * 86400.  # Convert timestamp from days to seconds
tt5 = datetime.utcfromtimestamp(tt4).strftime("%Y-%m-%d %H:%M:%S")
print(tt5)

2018-07-31 19:09:10
票数 6
EN

Stack Overflow用户

发布于 2018-08-02 18:21:30

看来,LibreOffice时代与Posix时代不一样。我发现这篇文章可能会有帮助。

https://syslog.me/2012/08/28/dates-from-unix-timestamps-in-openoffice-libreoffice/

Posix时代是1970年1月1日午夜,世界协调时。

代码语言:javascript
复制
>>> datetime.utcfromtimestamp(0).strftime("%Y-%m-%d %H:%M:%S")
'1970-01-01 00:00:00'

LibreOffice时代是1899年12月30日。

除以86400表示您正在尝试将秒转换为天。但是,Python中的datetime.fromtimestamp函数期望在秒内有一个时间戳。

另外,在你的电话中,你倒转了几个月和几分钟。%M表示分钟,%m表示月份。

最后,为了避免时区问题,您可能需要使用use时间戳而不是zone时间戳。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51659683

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档