2013-10-03 119 views
0

民间, 如何将下列字符串转换为unix时期时间戳?将http请求时间转换为Python中的unix时间戳

Thu, 03 Oct 2013 14:55:44 GMT 

我可以在本地HTTP时间戳通过以下拉:

In [53]: now = datetime.now() 

In [54]: stamp = mktime(now.timetuple()) 

In [55]: print format_date_time(stamp) 
Thu, 03 Oct 2013 16:24:59 GMT 

以及如何将我转换产生的Unix时间戳回到上面的格式?

谢谢!

回答

1
>>> import time 
>>> int(time.time()) 
1380817337 
>>> 
1

我今天早些时候回答了一个非常类似的问题here。让我知道这是否适合你。

基本上你需要看看time.strptime()time.mktime()函数。

在你的情况,格式说明是:

time.strptime("Thu, 03 Oct 2013 14:55:44 GMT", "%a, %d %b %Y %X %Z")

+0

完全不是那么回事,我....打印time.strptime( “星期四,2013年10月3日16时24分59秒GMT”)返回:ValueError异常:时间数据“星期四,2013年10月3日16:24:59 GMT'不符合格式'%a%b%d%H:%M:%S%Y' – Cmag

+0

@Clustermagnet更新了您需要使用的确切函数调用的答案。你错过了格式说明符。 – Nikhil

2

转换为时间戳:

from datetime import datetime 

ts = datetime.strptime("Thu, 03 Oct 2013 14:55:44 GMT", "%a, %d %b %Y %X %Z").strftime("%s") 
print ts # '1380804944' 

转换回原来的格式:

from datetime import datetime 

dtime = datetime.fromtimestamp(int('1380804944')).strftime("%a, %d %b %Y %X %Z GMT") 
print dtime  # 'Thu, 03 Oct 2013 14:55:44 ' 
1
>>> import email 
>>> time.mktime(email.utils.parsedate("Thu, 03 Oct 2013 14:55:44 GMT")) 
1380804944.0 

回来:

>>> f = 1380804944.0 
>>> email.utils.formatdate(f, False, True) 
'Thu, 03 Oct 2013 12:55:44 GMT'