将字符串时间戳(带有时区偏移量)转换为本地时间..?蟒蛇

alf*_*edo 9 python timezone datetime

我试图将字符串时间戳转换为正确的日期时间对象.我遇到的问题是有一个时区偏移,我正在做的一切似乎都不起作用.

最终我想将字符串时间戳转换为我的机器时区中的日期时间对象.

# string timestamp     
date = u"Fri, 16 Jul 2010 07:08:23 -0700"
Run Code Online (Sandbox Code Playgroud)

ars*_*ars 9

dateutil包是非常方便的解析日期/时间:

In [10]: date = u"Fri, 16 Jul 2010 07:08:23 -0700"

In [11]: from dateutil.parser import parse

In [12]: parse(date)
Out[12]: datetime.datetime(2010, 7, 16, 7, 8, 23, tzinfo=tzoffset(None, -25200))
Run Code Online (Sandbox Code Playgroud)

最后,要转换成您当地的时区,

In [13]: parse(date).astimezone(YOUR_LOCAL_TIMEZONE)
Run Code Online (Sandbox Code Playgroud)


Chr*_* B. 5

看起来datetime.datetime.strptime(d, '%a, %d %b %Y %H:%M:%S %z')应该可行,但根据此错误报告,%z处理存在问题.所以你可能需要自己处理时区:

import datetime

d = u"Fri, 16 Jul 2010 07:08:23 -0700"

d, tz_info = d[:-5], d[-5:]
neg, hours, minutes = tz_info[0], int(tz_info[1:3]), int(tz_info[3:])
if neg == '-':
    hours, minutes = hours * -1, minutes * -1

d = datetime.datetime.strptime(d, '%a, %d %b %Y %H:%M:%S ')
print d
print d + datetime.timedelta(hours = hours, minutes = minutes)
Run Code Online (Sandbox Code Playgroud)