【发布时间】:2011-11-20 17:47:51
【问题描述】:
我正在尝试找出 datetime 和 time 模块之间的区别,以及每个模块的用途。
我知道datetime 提供日期和时间。 time 模块有什么用?
我们将不胜感激,尤其值得关注有关时区的差异。
【问题讨论】:
我正在尝试找出 datetime 和 time 模块之间的区别,以及每个模块的用途。
我知道datetime 提供日期和时间。 time 模块有什么用?
我们将不胜感激,尤其值得关注有关时区的差异。
【问题讨论】:
刚刚注意到time 比datetime 更精确,多了一个数字。
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
【讨论】:
time 模块主要用于处理 Unix 时间戳;表示为自 Unix 纪元以来以秒为单位的浮点数。 datetime 模块可以支持许多相同的操作,但提供了更面向对象的类型集,并且对时区的支持也有限。
【讨论】:
time和datetime.time有什么区别?
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() 来代替吗? :)
ipython 中的两个命令表明time.gmtime() 产生一个元组,而time.time() 将UNIX epoch time 作为一个十进制值给出自00:00:00 以来经过的秒数UTC,1970 年 1 月 1 日,星期四。函数 time.localtime(t) 将纪元时间转换为本地时间元组。所以,您的问题的答案是“否”。
t = time.time() 是一个浮点数,表示自系统纪元以来的时间(以秒为单位)。因此,每天可以简单地增加或减少 86400 秒; t += 86400
如果你对时区感兴趣,你应该考虑使用 pytz。
【讨论】:
当您只需要特定记录的时间时,可以使用时间模块 - 比如假设您有一个单独的表/文件用于每天的交易,那么您只需要时间。 但是时间数据类型通常用于存储两个时间点之间的时间差。
这也可以使用日期时间来完成,但如果我们只处理特定日期的时间,则可以使用时间模块。
日期时间用于存储特定数据和时间的记录。就像在租赁公司一样。到期日期将是日期时间数据类型。
【讨论】: