gpt4 book ai didi

python - Python 中奇怪的日期时间差异

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:42 26 4
gpt4 key购买 nike

谁能告诉我为什么 python 显示两个日期之间相差 1310 秒?

import datetime
time1=datetime.datetime(2016,12,8,20,5,0)
time2=datetime.datetime(2016,12,7,19,43,10)
timediff=time1-time2
print(timediff)
print(timediff.seconds)

>1 day, 0:21:50
>1310

最佳答案

如您所见here timedelta 对象具有三个字段:days;和 微秒。或者按照文档中的说明:

class datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)

(...)

Only days, seconds and microseconds are stored internally. Arguments are converted to those units:

  • A millisecond is converted to 1000 microseconds.
  • A minute is converted to 60 seconds.
  • An hour is converted to 3600 seconds.
  • A week is converted to 7 days.

(添加格式)

尽管构造函数是 timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 并因此提供了输入方法小时,因此它将 分钟小时 等全部转换为秒。构造函数将如下所示:

def __init__(self, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0):
self.microseconds = microseconds+1000*milliseconds
self.seconds = seconds+60*minutes+3600*hours+self.microseconds//1000000
self.microseconds %= 1000000
self.days = days+7*weeks+self.seconds//86400
self.seconds %= 86400

(但可能更高级一些,等等)

所以这意味着 .seconds 实际上是模日,没有微秒。

但是您可以使用 timediff.total_seconds返回总秒数:

>>> timediff.total_seconds()
87710.0

所以 total_seconds() 基本上是:

def total_seconds(self):
return 86400.0*self.days+self.seconds+1e-6*self.microseconds
# ^ number of seconds in a day ^
# | 1 micro is 1e-6

如果将 1310 除以 60,您将看到它返回:

>>> 1310/60 # obtain number of minutes
21.833333333333332
>>> 1310%60 # obtain number of seconds (without minutes)
50

所以21分50秒

关于python - Python 中奇怪的日期时间差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42668990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com