代码之家  ›  专栏  ›  技术社区  ›  ibz

python-calendar.timegm()与time.mktime()。

  •  55
  • ibz  · 技术社区  · 16 年前

    我似乎很难理解这个问题。

    有什么区别吗 calendar.timegm() time.mktime() ?

    说我有一个 datetime.datetime 如果没有附加TZINFO,两个不应该给出相同的输出吗?它们不是都给出了epoch和作为参数传递的日期之间的秒数吗?因为经过的日期没有TZINFO,那秒数是不是相同?

    >>> import calendar
    >>> import time
    >>> import datetime
    >>> d = datetime.datetime(2010, 10, 10)
    >>> calendar.timegm(d.timetuple())
    1286668800
    >>> time.mktime(d.timetuple())
    1286640000.0
    >>> 
    
    2 回复  |  直到 14 年前
        1
  •  92
  •   sth    14 年前

    time.mktime() 假设传递的元组在本地时间内, calendar.timegm() 假设是格林尼治标准时间/UTC。根据解释,元组表示不同的时间,因此函数返回不同的值(从纪元开始的秒数是基于UTC的)。

    值之间的差异应等于本地时区的时区偏移量。

        2
  •  9
  •   SilentGhost    16 年前

    calendar.timegm 从UTC时间戳转换, time.mktime converts from local time not UTC .

    结果相差8小时完全符合所在地区的时区。

    推荐文章