首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用python转换Mac时间戳

用python转换Mac时间戳
EN

Stack Overflow用户
提问于 2013-06-03 16:17:40
回答 3查看 4.3K关注 0票数 5

我正在尝试用python (在linux系统上)将Mac (HFS Plus)时间戳转换成人类可读的格式。

HFS +时间戳表示自1904年1月1日午夜以来的秒数。

例如,时间戳:3453120824

人类日期时间:Mon,2013年6月3日16:13:44格林尼治时间

有没有蟒蛇的方法可以做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-03 16:25:15

日期时间时三角洲结合使用怎么样?您需要特别注意格式化字符这里的列表

代码语言:javascript
复制
>>> import datetime
>>> d = datetime.datetime.strptime("01-01-1904", "%m-%d-%Y")
>>> d
datetime.datetime(1904, 1, 1, 0, 0)
>>> d + datetime.timedelta(seconds=3453120824)
datetime.datetime(2013, 6, 3, 16, 13, 44) 
>>> (d + datetime.timedelta(seconds=3453120824)).strftime("%a, %d %b %Y %H:%M:%S GMT")
'Mon, 03 Jun 2013 16:13:44 GMT'
票数 5
EN

Stack Overflow用户

发布于 2016-04-28 17:12:41

你根本不需要约会时间。苹果公司将他们的时间从2001-01-01开始存储起来。超级烦人,但很容易克服。只需在秒内将1970-01-01和2001-01-01之间的差异添加到变量中,并使用时间将其格式化为如下一行代码:

代码语言:javascript
复制
import time
mac_date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(data[0]/1000000000 + 978307200))
print mac_date

在这个例子中,数据是我从对chat.db执行sqlite查询得到的日期,它是元组中的第一个字段。978307200是unix时代和mac时间戳在几秒钟内的区别,这一点永远不会改变。当您将这两者相加并转换unix时代时,您将得到一个人类可读的日期。

*在高塞拉,chat.db文件现在使用纳秒。这要求日期值除以1000000000。

票数 1
EN

Stack Overflow用户

发布于 2014-08-28 10:56:05

您可以通过以下方法将相反的方式(datetime对象转换为MAC绝对时间):

代码语言:javascript
复制
import datetime
dt = datetime.datetime(2013,6,3,16,13,44)
tmp = datetime.datetime(1904,1,1,0,0)
MacAbsTime = int((dt - tmp).total_seconds())

还请注意,iOS MAC绝对时间与OSX版本不同,使用的是自2001年1月1日起的秒数,而不是1904年。

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

https://stackoverflow.com/questions/16901279

复制
相关文章

相似问题

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