我正在尝试用python (在linux系统上)将Mac (HFS Plus)时间戳转换成人类可读的格式。
HFS +时间戳表示自1904年1月1日午夜以来的秒数。
例如,时间戳:3453120824
人类日期时间:Mon,2013年6月3日16:13:44格林尼治时间
有没有蟒蛇的方法可以做到这一点?
发布于 2013-06-03 16:25:15
把日期时间和时三角洲结合使用怎么样?您需要特别注意格式化字符这里的列表
>>> 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'发布于 2016-04-28 17:12:41
你根本不需要约会时间。苹果公司将他们的时间从2001-01-01开始存储起来。超级烦人,但很容易克服。只需在秒内将1970-01-01和2001-01-01之间的差异添加到变量中,并使用时间将其格式化为如下一行代码:
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。
发布于 2014-08-28 10:56:05
您可以通过以下方法将相反的方式(datetime对象转换为MAC绝对时间):
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年。
https://stackoverflow.com/questions/16901279
复制相似问题