Python标准库datetime库timedelta类详解(1/6)

2023-12-30 14:30:06

????????timedelta是Python的datetime模块中的一个类,主要用于计算两日期或时间之间的差异。

? ? ? ? 这个类可以用来进行日期的算术计算,以及大小比较。

????????timedelta?对象表示两个 date 或者 time 的时间间隔。

语法:

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

所有参数都是可选的并且默认为?0。 这些参数可以是整数或者浮点数,也可以是正数或者负数。

millisecond: 毫秒,千分之一秒,即0.001秒。

microsecond: 微秒,百万分之一秒,即0.000001秒

nanosecond: 纳秒,十亿分之一秒,1ns = 10-9s

只有?days,?seconds?和?microseconds?会存储在内部。 参数单位的换算规则如下:

1毫秒会转换成1000微秒。

1分钟会转换成60秒。

1小时会转换成3600秒。

1星期会转换成7天。

日期、秒、微秒都是标准化的,所以它们的表达方式也是唯一的,例:

0?<=?microseconds?<?1000000

0?<=?seconds?<?3600*24?(一天的秒数)

-999999999?<=?days?<=?999999999

下面的例子演示了如何对?days,?seconds?和?microseconds?以外的任意参数执行“合并”操作并标准化为以上三个结果属性:

示例

import datetime

delta = datetime.timedelta(days=50,seconds=27,microseconds=10,milliseconds=29000,minutes=5,hours=8,weeks=2)

print(delta) # 输出:64 days, 8:05:56.000010

在有任何参数为浮点型并且 microseconds 值为小数的情况下,从所有参数中余下的微秒数将被合并,并使用四舍五入偶不入奇的规则将总计值舍入到最接近的整数微秒值。 如果没有任何参数为浮点型的情况下,则转换和标准化过程将是完全精确的(不会丢失信息)。

如果标准化后的 days 数值超过了指定范围,将会抛出?OverflowError?异常。

注意

如果对负数值进行标准化的可能会出现预料之外的结果,例:

import datetime

d = datetime.timedelta(microseconds=-1)

print(d) # 输出:-1 day, 23:59:59.999999

类属性

1、timedelta.min:最小的timedelta对象,值为-999999999天。

例:

import datetime

print(datetime.timedelta.min) #?输出:-999999999 days, 0:00:00 约-9.9亿天

2、timedelta.max:小大的timedelta对象,值为999999999天。

import datetime

print(datetime.timedelta.max) # 输出:999999999 days, 23:59:59.999999

9.999999999亿天,约274万年

3、timedelta.resolution:两个timedelta对象最小间隔,值为1微秒

两个不相等的?timedelta?类对象最小的间隔为?timedelta(microseconds=1)。

例:

from datetime import date, timedelta ?

??

print(timedelta.resolution) # 输出:0:00:00.000001,100万分之1秒

注意:

因为标准化的缘故,timedelta.max?>?-timedelta.min,-timedelta.max?不可以表示一个?timedelta?类对象。

实例属性(只读):days、seconds、microseconds

属性

days

-999999999 至 999999999 ,含999999999

seconds

0 至 86399,包含86399

microseconds

0 至 999999,包含999999

例:

from datetime import timedelta ?

today = timedelta(days=1,seconds=1,milliseconds=1,minutes=1)

??

print(today.days) # 输出:1

print(today.seconds) # 输出:61

print(today.microseconds)# 输出:1000

支持的运算:+-*/、abs、str、repr

import datetime

one_year = datetime.timedelta(days=365)

d1 = datetime.timedelta(days=364)

plus = one_year + d1 # 输出:729 days, 0:00:00

one_day = one_year - d1 # 输出:1 day, 0:00:00

ten_year = one_year * 10 # 输出:3650 days, 0:00:00

five_year = ten_year / 2 # 输出:1825 days, 0:00:00

支持timedelta对象之间进行比较:==、!=、>、<、<=、>=

方法

1、timedelta.total_seconds():将timedelta对象换算成秒数

3.2 新版功能.

例:

import datetime

d1 = datetime.timedelta(days=1)

print(datetime.timedelta.total_seconds(d1)) # 输出:86400.0

需要注意的是,时间间隔较大时,这个方法的结果中的微秒将会失真(大多数平台上大于270年视为一个较大的时间间隔)。

最新介绍可参考官方文档:datetime --- 基本日期和时间类型 — Python 3.12.1 文档

文章来源:https://blog.csdn.net/m0_73608980/article/details/135225773
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。