如何在Python中将ticks转换为日期时间?

4

如何在Python中将tick转换为datetime?

我正在尝试将52707330000转换为1小时27分钟50秒。

这里http://tickstodatetime.com/可以实现,但我不懂JavaScript语言。


你可以除以543374536.0824742…或605831379.3103448,取决于你想要的是97秒还是1分钟27秒(即87秒)。 - Kevin
在这个上下文中,“ticks”是什么?52707330000如何转换为1分27秒?或97秒(这又是完全不同的值)。 - Martijn Pieters
我不确定在这个上下文中的“ticks”是什么意思。我知道在将ticks转换为秒的网站上,它以某种方式起作用,我在描述中贴出了链接。对于拼写错误我表示抱歉,应该是87秒。 - pr338
该网站报告52707330000个滴答声等于1小时27分钟50.734秒,而不是1分27秒...因此10 ** 7个滴答声= 1秒。 - unutbu
3个回答

12
以下将使用datetime的timedelta将ticks转换为Python datetime对象(从现在开始)。
import datetime
ticks = 52707330000
converted_ticks = datetime.datetime.now() + datetime.timedelta(microseconds = ticks/10)

接着会是这样的:

converted_ticks.strftime("%Y-%m-%d %H:%M:%S") // '2015-08-07 14:17:48'
希望这可以帮到你!编辑:仅使用datetime.timedelta(microseconds = ticks / 10)会给出时间,而不是相对于“现在”的时间。

7
为了获得与网站上相同的时间:
#!/usr/bin/env python
from __future__ import division
from datetime import datetime, timedelta

ticks = 52707330000
dt = datetime(1, 1, 1) + timedelta(microseconds=ticks/10)
print(dt.isoformat() + "Z")
# -> 0001-01-01T01:27:50.733000Z

对于像pwdLastSet这样的Microsoft“ticks”,上面的代码非常有效,但是Microsoft使用1601年作为起始日期。因此,上面的datetime行应该是:dt = datetime(1601, 1, 1) + timedelta(microseconds=ticks / 10)。 - thedude

6
您可以直接使用以下代码:
from datetime import datetime

timestamp = 52707330000
your_date = datetime.fromtimestamp(timestamp)

还是不还?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接