Python datetime对象未显示正确的日期

时间:2016-12-15 05:44:16

标签: python date datetime

我试图将UTC字符串转换为python datetime对象。

我要转换的字符串是:2016-12-16T23:00:00.000Z,格式为UTC。当我将代码转换为不同的时区时,我得到2016-12-16 23:00:00+01:00,这是正确的行为。

我的问题是,为什么当我访问datetime对象时,这一天仍然是16而不是17,正如我希望在添加1 hour时发生的那样到23:00

我错过了什么?

  

我的代码

tz = pytz.timezone("Europe/Ljubljana")
dt = datetime.datetime.strptime(start_date, "%Y-%m-%dT%H:%M:%S.000Z")
date = tz.localize(dt)

print 'Date: ', date.strftime('%d')
print 'Date: ', date
  

结果

Date:  16
Date:  2016-12-16 23:00:00+01:00

1 个答案:

答案 0 :(得分:1)

这是预期的行为。 dt没有设置时区。当您拨打tz.localize(dt)时,只需指定时区。

这是你想要做的:

tz = pytz.timezone("Europe/Ljubljana")
dt = datetime.datetime.strptime(start_date, "%Y-%m-%dT%H:%M:%S.000Z")
dt = dt.replace(tzinfo=pytz.utc) # you specify the time is UTC
print dt.astimezone(tz) # and now you convert dt to your preferred timezone

您获得:

datetime.datetime(2016, 12, 17, 0, 0, tzinfo=<DstTzInfo 'Europe/Ljubljana' CET+1:00:00 STD>)