时间数据转换在gm time python

时间:2017-01-25 16:12:42

标签: python time

我正在转换一些日期时间,但我遇到了问题。日期时间是

my_time = "2012-03-18 14:50:36.90"

转换此日期时间的代码是

import time
import datetime
import calendar

time_con = datetime.datetime.strptime(my_time,'%Y-%m-%d %H:%M:%S.%f')
final_time = calendar.timegm(time_con.timetuple())
打印时,我得到了

>> print "time_con", time_con

datetime.datetime(2012, 3, 18, 14, 50, 36, 900000)

当我打印final_time时,我得到了

>> print "final_time", final_time
1332082236

我无法获得毫秒,而且我不知道如何正确处理它们,因为我需要在我的约会时间内使用毫秒。我搜索SO但没有任何线索。但是,能帮助会很棒,这将节省我的一天。感谢

3 个答案:

答案 0 :(得分:2)

这很容易解决。由于time_con中没有存储毫秒但是微秒,我们可以time_con.microsecond*1000来获得毫秒。

import time
import datetime
import calendar

my_time = "2012-03-18 14:50:36.90"
time_con = datetime.datetime.strptime(my_time,'%Y-%m-%d %H:%M:%S.%f')
microsecs =  time_con.microsecond
final_time = calendar.timegm(time_con.timetuple())*1000000 + millisecs
# final_time is in microseconds

# To print in seconds
# print(final_time/1000000)

print(final_time)

结果

1332082236900

希望你想要的是什么。希望这有帮助!

答案 1 :(得分:1)

在Python 3中你可以做到

import datetime

my_time = "2012-03-18 14:50:36.90"
time_con = datetime.datetime.strptime(my_time,'%Y-%m-%d %H:%M:%S.%f')
final_time = time_con.replace(tzinfo=datetime.timezone.utc).timestamp()
# 1332082236.9

Here is the link to datetime.datetime.timestamp's documentation

答案 2 :(得分:0)

请阅读calendar.timegm calendar.timegm(tuple)(强调我的):

  

gmtime()

     

一个不相关但很方便的函数,它接受时间模块中的time_t函数返回的时间元组,并返回相应的 Unix时间戳值,假定1970年的时代,和POSIX编码。

docs 定义为非负整数。好吧,维基百科说它可以是浮点数,但无论如何,UNIX系统通常用C类型{{1}}的变量表示它,这是完全非负的。 整数,因为它表示自UNIX纪元开始以来经过的秒数。

因此,它显然不能代表毫秒,因为它被定义为整数。