【问题标题】:Calculate time in a different timezone in Python在 Python 中计算不同时区的时间
【发布时间】:2014-07-12 05:17:21
【问题描述】:

我正在使用来自两个不同时区的时间戳的数据集。以下是我正在尝试做的事情:

1.从字符串中创建时间对象t1;

2.设置t1的时区;

3.推断不同时区的时间t2。

import time
s = "2014-05-22 17:16:15"
t1 = time.strptime(s, "%Y-%m-%d %H:%M:%S")
#Set timezone for t1 as US/Pacific
#Based on t1, calculate the time t2 in a different time zone
#(e.g, Central European Time(CET))

任何答案/cmets 将不胜感激..!

【问题讨论】:

    标签: python datetime pytz


    【解决方案1】:

    使用datetimepytz

    import datetime
    import pytz
    pac=pytz.timezone('US/Pacific')
    cet=pytz.timezone('CET')
    s = "2014-05-22 17:16:15"
    t1 = datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
    pacific = pac.localize(t1)
    cet_eur = pacific.astimezone(cet)
    print pacific
    print cet_eur
    
    2014-05-22 17:16:15-07:00
    2014-05-23 02:16:15+02:00
    

    我想你想要datetime.timetuple

    返回一个 time.struct_time,例如 time.localtime() 返回的。小时、分钟和秒为 0,DST 标志为 -1。 d.timetuple() 等价于 time.struct_time((d.year, d.month, d.day, 0, 0, 0, d.weekday(), yday, -1)),其中 yday = d.toordinal () - date(d.year, 1, 1).toordinal() + 1 是当年的天数,从 1 开始表示 1 月 1 日。

      print datetime.date.timetuple(t1)
      time.struct_time(tm_year=2014, tm_mon=5, tm_mday=22, tm_hour=17, tm_min=16, tm_sec=15, tm_wday=3, tm_yday=142, tm_isdst=-1)
    

    这是一个快速草稿,但 pytz 文档有很多很好且清晰的示例

    【讨论】:

    • 谢谢,帕德莱克!这很完美。有没有一种快速的方法可以将 datetime.datetime 对象转换为 time.struct_time 对象?我看到很多例子可以做另一种方式。
    • 嗨帕德莱克,再次感谢! datetime.date.timetuple() 有效,但它丢弃了时间信息(即 H:M:S),所以我建议将答案更改为 datetime.datetime.timetuple()。
    • @jinlong,对不起,是的,当然应该是 datetime.timetuple,我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 2021-03-22
    • 2016-09-30
    • 1970-01-01
    • 2020-04-13
    相关资源
    最近更新 更多