历元转换未按预期工作

2024-10-02 00:37:09 发布

您现在位置:Python中文网/ 问答频道 /正文

使用下面的代码,我想把输入的日期和时间转换成epoch。问题是我得到了一个epoch输出,但是当我通过在线转换(http://www.epochconverter.com/)测试它时,epoch不会转换为我输入的日期和时间:

date_time2 = '09.03.1999' + " " + "13:44:17.000000"
pattern2 = '%d.%m.%Y %H:%M:%S.%f'
epoch2 = int(time.mktime(time.strptime(date_time2, pattern2)))
print epoch2

Tags: 代码comhttpdatetimewww时间int
2条回答

(我已经在这里对@donkopotamus的答案投了赞成票:https://stackoverflow.com/a/38558696/42346

使用以下答案:https://stackoverflow.com/a/19527596/42346我们可以看到如何将本地时间转换为GMT。这需要^{}。你知道吗

import datetime as dt 
import pytz

naive_date = dt.datetime.strptime('09.03.1999' + " " + "13:44:17.000000", 
                                  '%d.%m.%Y %H:%M:%S.%f')
localtz = pytz.timezone('Hongkong')
date_aware = localtz.localize(naive_date,is_dst=None)
utc_date = date_aware.astimezone(pytz.utc)
int(time.mktime(utc_date.utctimetuple()))

结果:

920987057

enter image description here

这里发生了什么:

  • time.strptime产生一个time.struct_time,它与C的tm结构非常相似
  • 那么^{}的文档就相当清楚了,它从struct_time生成了一个本地时间,而不是GMT时间。你知道吗

因此,您需要一个函数将struct_time转换为GMT时间。这样的函数在python的^{}模块中隐藏了一点。你知道吗

请尝试:

date_time2 = '09.03.1999' + " " + "13:44:17.000000"
pattern2 = '%d.%m.%Y %H:%M:%S.%f'

# get a time structure
tm = time.strptime(date_time2, pattern2)

# convert to gmt
gmt_epoch = int(calendar.timegm(tm))

在这种情况下,我们得到:

>>> gmt_epoch
920987057

把这个输入到你提供的网站上,就会得到这是GMT:1999年3月9日星期二13:44:17 GMT

相关问题 更多 >

    热门问题