【问题标题】:Difference between Python datetime vs time modulesPython日期时间与时间模块之间的区别
【发布时间】:2011-11-20 17:47:51
【问题描述】:

我正在尝试找出 datetimetime 模块之间的区别,以及每个模块的用途。

我知道datetime 提供日期和时间。 time 模块有什么用?

我们将不胜感激,尤其值得关注有关时区的差异。

【问题讨论】:

    标签: python datetime time


    【解决方案1】:

    刚刚注意到timedatetime 更精确,多了一个数字。

    import time as tm
    from datetime import datetime as dt
    restime = tm.time()
    resdtime = dt.timestamp(dt.now())
    print("TIME:".rjust(10," "),restime)
    print("DATETIME:".rjust(10," "),resdtime)
    

    输出

         TIME: 1637357103.7650678
     DATETIME: 1637357103.765067
    

    【讨论】:

    • 在你击落我之前...我知道它不会在确切的时间运行...但是尝试迭代它几次...它实际上还有另一个数字。
    【解决方案2】:

    time 模块主要用于处理 Unix 时间戳;表示为自 Unix 纪元以来以秒为单位的浮点数。 datetime 模块可以支持许多相同的操作,但提供了更面向对象的类型集,并且对时区的支持也有限。

    【讨论】:

    • 另外,timedatetime.time有什么区别?
    • 如果它是实时/单调的,会很高兴详细说明属性。就像在 POSIX 标准中一样,您有:CLOCK_REALTIME、CLOCK_MONOTONIC、CLOCK_THREAD 等……在 POSIX 时钟上,请参阅:stackoverflow.com/questions/3523442/…
    【解决方案3】:

    坚持time 以防止 DST 歧义。

    仅使用系统time 模块而不是datetime 模块到prevent ambiguity issues with daylight savings time (DST)

    转换为任何时间格式(包括当地时间)非常容易:

    import time
    t = time.time()
    
    time.strftime('%Y-%m-%d %H:%M %Z', time.localtime(t))
    '2019-05-27 12:03 CEST'
    
    time.strftime('%Y-%m-%d %H:%M %Z', time.gmtime(t))
    '2019-05-27 10:03 GMT'
    

    time.time() 是一个浮点数,表示自系统纪元以来的时间(以秒为单位)。 time.time() 是明确时间戳的理想选择。

    如果系统另外运行network time protocol (NTP) 守护进程,最终会得到一个相当稳定的时间基准。

    这是time 模块的documentation

    【讨论】:

    • 在您的示例中,您使用time.localtime(),当然其中包含DST。如果我们要成为纯粹主义者,我们不应该使用time.gmtime() 来代替吗? :)
    • @Seamus 简单地测试ipython 中的两个命令表明time.gmtime() 产生一个元组,而time.time()UNIX epoch time 作为一个十进制值给出自00:00:00 以来经过的秒数UTC,1970 年 1 月 1 日,星期四。函数 time.localtime(t) 将纪元时间转换为本地时间元组。所以,您的问题的答案是“否”。
    • 有没有办法给时间对象添加天数?使用 datetime 有 timedelta(days=6) 方法。
    • @NehemiasHerrera t = time.time() 是一个浮点数,表示自系统纪元以来的时间(以秒为单位)。因此,每天可以简单地增加或减少 86400 秒; t += 86400
    【解决方案4】:

    如果你对时区感兴趣,你应该考虑使用 pytz。

    【讨论】:

    • 听起来他最感兴趣的是时间和日期时间模块以及它们之间的时区差异。恕我直言,将另一个依赖项引入其中几乎是无关紧要的。
    • 时间和日期时间模块对时区的支持真的很差……如果他真的对以有用的方式处理时区感兴趣,那么他真的应该了解 pytz。您引入依赖项来解决当前依赖项无法帮助您解决问题的问题...
    【解决方案5】:

    当您只需要特定记录的时间时,可以使用时间模块 - 比如假设您有一个单独的表/文件用于每天的交易,那么您只需要时间。 但是时间数据类型通常用于存储两个时间点之间的时间

    这也可以使用日期时间来完成,但如果我们只处理特定日期的时间,则可以使用时间模块。

    日期时间用于存储特定数据和时间的记录。就像在租赁公司一样。到期日期将是日期时间数据类型。

    【讨论】:

      猜你喜欢
      • 2020-10-19
      • 2021-05-08
      • 2010-10-25
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2012-09-07
      • 1970-01-01
      相关资源
      最近更新 更多