-
2021-12-29 10:34:03
datetime 模块还提供了 timedelta 数据类型,它表示一段时间,而不是一个时刻。
在交互式环境中输入以下代码:
➊ >>> delta = datetime.timedelta(days=11, hours=10, minutes=9, seconds=8)
➋ >>> delta.days, delta.seconds, delta.microseconds
(11, 36548, 0)
>>> delta.total_seconds()
986948.0
>>> str(delta)
'11 days, 10:09:08'要创建 timedelta 对象,就用 datetime.timedelta()函数。datetime.timedelta()函数接受关键字参数
weeks、days、hours、minutes、seconds、milliseconds 和 microseconds。没有 month 和 year
关键字参数,因为“月”和“年”是可变的时间,依赖于特定月份或年份。timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、seconds 和 microseconds
属性中。total_seconds()方法返回只以秒表示的时间。将一个 timedelta 对象传入 str(),将返回格式良好的、人类可读的字符串表示。
在这个例子中,我们将关键字参数传入 datetime.delta(),指定 11 天、10 小时、 9 分和 8 秒的时间,将返回的 timedelta 对象保存在 delta
中➊。该 timedelta 对象的 days 属性为 11,seconds 属性为 36548(10 小时、9 分钟、8 秒,以秒表示)➋。调
用total_seconds()告诉我们,11 天、10 小时、9 分和 8 秒是 986948 秒。最后,将这个
timedelta 对象传入 str(),返回一个字符串,明确解释了这段时间。
算术运算符可以用于对 datetime 值进行日期运算。例如,要计算今天之后 1000
天的日期,在交互式环境中输入以下代码:
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 27, 18, 38, 50, 636181)
>>> thousandDays = datetime.timedelta(days=1000)
>>> dt + thousandDays
datetime.datetime(2017, 11, 23, 18, 38, 50, 636181)
首先,生成表示当前时刻的 datetime 对象,保存在 dt 中。然后生成一个timedelta对象,表示 1000 天,保存在 thousandDays 中。dt 与 thousandDays
相加,得到一个 datetime 对象,表示现在之后的 1000 天。Python 将完成日期运算,弄清楚 2015 年 2 月 27 日之后的 1000 天,将是 2017 年 11 月 23
日。这很有用,因为如果要从一个
给定的日期计算 1000 天之后,需要记住每个月有多少天,闰年的因素和其他棘手的细节。datetime 模块为你处理所有这些问题。
利用+和-运算符,timedelta 对象与 datetime 对象或其他 timedelta 对象相加或相减。利用*和/运算符,timedelta
对象可以乘以或除以整数或浮点数。在交互式环境中输入以下代码:
➊ >>> oct21st = datetime.datetime(2015, 10, 21, 16, 29, 0)
➋ >>> aboutThirtyYears = datetime.timedelta(days=365 * 30)
>>> oct21st
datetime.datetime(2015, 10, 21, 16, 29)
>>> oct21st - aboutThirtyYears
datetime.datetime(1985, 10, 28, 16, 29)
>>> oct21st - (2 * aboutThirtyYears)
datetime.datetime(1955, 11, 5, 16, 29)这里,我们生成了一个 DateTime 对象,表示 2015 年 10 月 21 日➊,以及一个 timedelta 对象,表示大约 30 年的时间(我们假设每年为 365
天)➋。从 oct21st 中减去 aboutThirtyYears,我们就得到一个 datetime 对象,表示 2015 年 10 月 21 日前 30年的一天。从
oct21st 中减去 2 * aboutThirtyYears,得到一个 datetime 对象,表示 2015年 10 月 21 日之前 60 年的一天。
更多相关内容 -
Python timedelta
2020-07-11 03:54:52Python timedelta object is used to perform datetime manipulations in an easy way. The timedelta class is part of datetime module. Python timedelta对象用于以简单的方式执行日期时间操作。 timedelta类是...Python timedelta object is used to perform datetime manipulations in an easy way. The timedelta class is part of datetime module.
Python timedelta对象用于以简单的方式执行日期时间操作。 timedelta类是datetime模块的一部分。
Pythoon timedelta (Pythoon timedelta)
Python timedelta object represents a duration of time. We can create its object using following factory method.
Python timedelta对象代表持续时间。 我们可以使用以下工厂方法创建其对象。
datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
Note that timedelta() function takes keyword arguments. All arguments are optional and default to 0. Arguments may be integers or floats and may be positive or negative.
请注意,timedelta()函数采用关键字参数。 所有参数都是可选的,默认值为0。参数可以是整数或浮点数,并且可以是正数或负数。
The timedelta object supports mathematical operations such as addition, subtraction, multiplication etc. using basic operators, so it’s very easy to use it. It’s mostly used to get a datetime object with some delta date and time.
timedelta对象使用基本运算符支持数学运算,例如加法,减法,乘法等,因此非常易于使用。 它通常用于获取具有某些增量日期和时间的datetime对象。
Python timedelta示例 (Python timedelta example)
Let’s have a look at some examples of getting future dates and past dates using timedelta object.
让我们看一些使用timedelta对象获取未来日期和过去日期的示例。
from datetime import datetime, timedelta current_datetime = datetime.now() # future dates one_year_future_date = current_datetime + timedelta(days=365) print('Current Date:', current_datetime) print('One year from now Date:', one_year_future_date) # past dates three_days_before_date = current_datetime - timedelta(days=3) print('Three days before Date:', three_days_before_date)
Output:
输出:
Current Date: 2018-09-18 12:33:30.656394 One year from now Date: 2019-09-18 12:33:30.656394 Three days before Date: 2018-09-15 12:33:30.656394
带有日期和时间的Python timedelta (Python timedelta with date and time)
Python timedelta supports addition and subtraction with date object too.
Python timedelta也支持对date对象进行加减。
dt = current_datetime.date() print('Current Date:', dt) dt_tomorrow = dt + timedelta(days=1) print('Tomorrow Date:', dt_tomorrow)
Output:
输出:
Current Date: 2018-09-18 Tomorrow Date: 2018-09-19
However, timedelta doesn’t support the same operations with time object.
但是,timedelta不支持与time对象相同的操作。
tm = current_datetime.time() print('Current Time:', tm) tm_after_30_mins = tm + timedelta(minutes=30)
Above code will produce the following error message.
上面的代码将产生以下错误消息。
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
Python timedelta属性 (Python timedelta attributes)
Python timedelta class has three attributes.
Python timedelta类具有三个属性。
print(timedelta.max) print(timedelta.min) print(timedelta.resolution)
Output:
输出:
999999999 days, 23:59:59.999999 -999999999 days, 0:00:00 0:00:00.000001
Python timedelta总秒数 (Python timedelta total seconds)
Python timedelta object total_seconds() method returns the total number of seconds.
Python timedelta对象total_seconds()方法返回秒总数。
print('Seconds in an year:', timedelta(days=365).total_seconds())
Output:
Seconds in an year: 31536000.0
输出:
Seconds in an year: 31536000.0
Python timedelta操作 (Python timedelta operations)
Let’s look at some more operations between timedelta objects.
让我们看一下timedelta对象之间的更多操作。
ct = current_datetime + timedelta(seconds=60) - timedelta(seconds=60) print(current_datetime == ct) ct = current_datetime + timedelta(seconds=10) * 6 print('Current Time:', current_datetime) print('One Min from Current Time:', ct) print('Timedelta absolute value:', abs(timedelta(days=-10))) print('Timedelta String Representation:', str(timedelta(days=1, seconds=30, hours=10, milliseconds=300))) print('Timedelta Object Representation:', repr(timedelta(days=1, seconds=30, hours=10, milliseconds=300)))
Output:
输出:
True Current Time: 2018-09-18 12:47:28.331197 One Min from Current Time: 2018-09-18 12:48:28.331197 Timedelta absolute value: 10 days, 0:00:00 Timedelta String Representation: 1 day, 10:00:30.300000 Timedelta Object Representation: datetime.timedelta(days=1, seconds=36030, microseconds=300000)
摘要 (Summary)
Python timedelta object is very useful for datetime manipulations. The support for basic arithmetic operators makes it very easy to use.
Python timedelta对象对于日期时间操作非常有用。 基本算术运算符的支持使其非常易于使用。
GitHub Repository. GitHub存储库中检出完整的python脚本和更多Python示例。Reference: Official Documentation
参考: 官方文档
-
python timedelta 求时间差省去繁琐格式转换
2020-12-07 15:44:11可以使用 datetime.timedelta 1) 将时间转化为字符串形式 可以看出直接将两个字符串格式的时间做差报错。 2)不转换为字符串 可以看出结果是 timedelta() 可以这样写在程序中不好取值呀,因此可以使用函数 ...目录
一、需求
需要实现一个小功能,求两个时间差,如果大于某个值,就做下一步操作,否则等待。
二、实现
可以使用 datetime.timedelta
1) 将时间转化为字符串形式
可以看出直接将两个字符串格式的时间做差报错。
2)不转换为字符串
可以看出结果是 timedelta()
可以这样写在程序中不好取值呀,因此可以使用函数 total_seconds(),函数返回值为 float 类型。
以上,问题解决~
三、补充
datetime.timedelta 除了 total_seconds() 还有哪些参数呢,可以在终端使用 help 来查看:
help(datetime.timedelta)
Help on class timedelta in module datetime:class timedelta(builtins.object)
| Difference between two datetime values.
|
| timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
|
| All arguments are optional and default to 0.
| Arguments may be integers or floats, and may be positive or negative.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| self != 0
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
:...skipping...
Help on class timedelta in module datetime:class timedelta(builtins.object)
| Difference between two datetime values.
|
| timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
|
| All arguments are optional and default to 0.
| Arguments may be integers or floats, and may be positive or negative.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| self != 0
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
:...skipping...
Help on class timedelta in module datetime:class timedelta(builtins.object)
| Difference between two datetime values.
|
| timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
|
| All arguments are optional and default to 0.
| Arguments may be integers or floats, and may be positive or negative.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| self != 0
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| __reduce__() -> (cls, state)
|
| __repr__(self, /)
| Return repr(self).
Help on class timedelta in module datetime:class timedelta(builtins.object)
| Difference between two datetime values.
|
| timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, ho
urs=0, weeks=0)
|
| All arguments are optional and default to 0.
| Arguments may be integers or floats, and may be positive or negative.
|
| Methods defined here:
|
| __abs__(self, /)
| abs(self)
|
| __add__(self, value, /)
| Return self+value.
|
| __bool__(self, /)
| self != 0
|
| __divmod__(self, value, /)
| Return divmod(self, value).
|
| __eq__(self, value, /)
| Return self==value.
|
| __floordiv__(self, value, /)
| Return self//value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __gt__(self, value, /)
| Return self>value.
|
| __hash__(self, /)
| Return hash(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __lt__(self, value, /)
| Return self<value.
|
| __mod__(self, value, /)
| Return self%value.
|
| __mul__(self, value, /)
| Return self*value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __neg__(self, /)
| -self
|
| __pos__(self, /)
| +self
|
| __radd__(self, value, /)
| Return value+self.
|
| __rdivmod__(self, value, /)
| Return divmod(value, self).
|
| __reduce__(...)
| __reduce__() -> (cls, state)
|
| __repr__(self, /)
| Return repr(self).
|
| __rfloordiv__(self, value, /)
| Return value//self.
|
| __rmod__(self, value, /)
| Return value%self.
|
| __rmul__(self, value, /)
| Return value*self.
|
| __rsub__(self, value, /)
| Return value-self.
|
| __rtruediv__(self, value, /)
| Return value/self.
|
| __str__(self, /)
| Return str(self).
|
| __sub__(self, value, /)
| Return self-value.
|
| __truediv__(self, value, /)
| Return self/value.
|
| total_seconds(...)
| Total seconds in the duration.
|
| ----------------------------------------------------------------------
| Static methods defined here:
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature
.
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| days
| Number of days.
|
| microseconds
| Number of microseconds (>= 0 and less than 1 second).
|
| seconds
| Number of seconds (>= 0 and less than 1 day).
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| max = datetime.timedelta(days=999999999, seconds=86399, microseconds=9...
|
| min = datetime.timedelta(days=-999999999)
|
| resolution = datetime.timedelta(microseconds=1)
(END) -
Python中timedelta类型的理解
2022-04-07 16:43:28Python中timedelta类型的理解 逻辑: timedelta = datetime1-datetime2 理解:一个时间等于两个时刻做差 代码 import datetime if __name__ == '__main__': datetime1 = datetime.datetime.strptime('12:10:00',...Python中timedelta类型的理解
逻辑:
timedelta = datetime1-datetime2
理解:一个时间等于两个时刻做差代码
import datetime if __name__ == '__main__': datetime1 = datetime.datetime.strptime('12:10:00', '%H:%M:%S') datetime2 = datetime.datetime.strptime('12:00:00', '%H:%M:%S') timedelta = datetime1-datetime2 print(timedelta)
import datetime if __name__ == '__main__': timedelta1 = datetime.timedelta() print(timedelta1) timedelta2 = datetime.timedelta(hours=18, minutes=0) print(timedelta2)
-
格式化python timedelta对象
2021-01-28 19:09:48我需要计算它们之间的timedelta,然后以spcific格式显示输出.Alpha_TimeObj = datetime.datetime(int(AlphaTime.strftime('%Y')), int(AlphaTime.strftime('%m')), int(AlphaTime.strftime('%d')), int(AlphaTime.... -
Timedelta
2020-12-25 21:06:38<div><p>Timedelta field backed by a float() <p>Note - contains the fix_errors fix, so that CI will pass.</p><p>该提问来源于开源项目:kiddouk/redisco</p></div> -
timedelta转换int
2021-03-05 15:04:39timedelta类型转换 timedalte是Python中datetime的一个对象,该对象表示两个时间的差值。 1.计算两个时间相差多少天 import datetime begin = datetime.datetime.strptime('2021-3-1 18:20:20', '%Y-%m-%d %H:%M:%... -
python timedelta函数是什么?
2021-02-03 00:52:10timedelta.max:正数最大时间差,相当于timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999)。 timedelta.resolution:两个时间的最小差值相当于timedelta(microseconds=1)。 5.... -
Python使用笔记:时间的运算timedelta
2020-12-04 08:35:07用timedelta做时间运算,包括加减乘除,甚是方便。timedelta精度从天到毫秒。本文结合实例介绍timedelta的用法。1. 一个实例先来个实例。假设我有公共交通的时刻表,包含车辆进站和出站的时刻(A表示departure, D表示... -
Python timedelta在几年
2020-12-03 13:18:48你需要多一个timedelta来告诉多少年过去了;你还需要知道开始(或结束)日期。 (这是一个闰年事。)最好的办法是使用dateutil.relativedelta object,但这是一个第三方模块。如果你想知道datetime从某个日期n年(默认到... -
Python中时间的处理之——timedelta篇
2020-12-04 08:34:54/usr/bin/python# coding=utf-8from datetime import datetime,timedelta"""timedelta代表两个datetime之间的时间差"""now = datetime.now()past = past = datetime(2010,11,12,13,14,15,16)timespan = now - past#... -
timedelta
2017-04-12 14:30:15start=datetime(2017,4,12) start+timedelta(10000) Out[65]: datetime.datetime(2044, 8, 28, 0, 0) -
python timedelta减法行为
2020-12-10 06:07:51这个问题起源于我遇到(another thread)关于python的datetime和timedelta实例时我用jimgardener跟踪更新,用eyquem阅读注释,并尝试了一些python代码..我不太理解这里的工作方式(由于我的python新手的状态)…我认为... -
如何在python中对datetime.timedelta执行除法?
2021-07-17 03:14:59I'd like to be able to do the following:num_intervals = (cur_date - previous_date) / interval_lengthorprint (datetime.now() - (datetime.now() - timedelta(days=5)))/ timedelta(hours=12)# won't run, wou... -
Python中date、datetime、timedelta 讲解
2021-02-23 11:08:44# 2:12:22.091281 # 时间差转换成秒 timedelta_seconds = (time1 - time2).seconds print('timedelta_seconds:', timedelta_seconds, type(timedelta_seconds)) # timedelta_seconds: 1513 # 时间差转换成日 ... -
【Python】timedelta类详解
2020-08-30 23:57:43timedelta类表示时间差,可以直接实例化得到,也可以由两个datetime类型的数据做差得到 导入 from datetime import timedelta 参数 实例化timedelta类时参数依次是: days, seconds, microseconds, milliseconds, ... -
在Python中将timedelta转换为int非常慢
2021-07-19 18:54:21.values-dfx['x'].values) / np.timedelta64(1, 'D') # check results are identical assert (days_lambda(dfx).values == days_pd(dfx).values).all() assert (days_lambda(dfx).values == days_np(dfx)).all() dfx... -
python时间模块 datetime (datetime、timedelta和timezone部分)
2019-11-21 15:21:23本文介绍python时间模块 datetime (datetime、timedelta和timezone部分)的常用方法和属性 -
Python timedelta模块 时间增减用法
2020-12-03 13:18:49timedalte 是datetime中的一个对象,该对象表示两个时间的差值构造函数:datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)其中参数都是可选,默认值为0其中: ... -
Python – 使用时间戳,timedelta的日期和时间比较
2020-12-09 06:52:33>我绊倒了这个神奇的timedelta功能,并探索了文档和SO,但我不认为这是我正在寻找的. >我的想法是将时间戳从时代转换成秒,然后减去,但是如果减法是错误的顺序(不同的情况下,如果事件在将来),这将成为一个问题,我觉得... -
通过日期字段提取年月日、timedelta提取时分秒并进行小时汇总
2021-02-09 07:13:59round(((df['days']*24 + df['hours'])*60 + df['minutes'])/60,3) return df 还是和第一个封装的函数一样,传入data变量和相应的类型变量即可(这里就是timedelta类型变量),输出结果如下 至此完成了业务需求,接... -
datetime.timedelta()
2020-10-26 10:27:57import datetime dt = datetime.datetime now = dt.now() now.strftime("%Y-%m-%d %H:%M:%S") '2020-10-26 09:53:49' # 问100天前 是几月记号 星期几,这个时候就可以使用timedelta ...(now - datetime.timedelta(days -
Pandas 时间差(Timedelta)
2020-04-04 13:34:01时间差(Timedelta)是时间上的差异,以不同的单位来表示。例如:日,小时,分钟,秒。它们可以是正值,也可以是负值。 可以使用各种参数创建Timedelta对象,如下所示 - 字符串 通过传递字符串,可以创建一个... -
Python timedelta中提取天数
2021-06-27 06:00:09timedalte 是datetime中的一个对象,该对象表示两个时间的差值 begin_time = df['candle_begin_time'].iloc[0] end_time = df['candle_begin_time'].iloc[-1] num_days = (end_time - begin_time ).days -
datetime.timedelta类介绍
2020-03-03 21:07:08datetime.timedelta 对象代表两个时间之间的时间差,两个date或datetime对象相减就可以返回一个timedelta对象 python中datetime模块中的timedelta可以很轻松的算出指定天数前的具体日期。比如100天前是几号。 函数... -
python中 timedelta() 的简单使用
2021-04-19 04:58:39python中 timedelta() ,strftime() 的简单使用 学习内容: 1.datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) #这些参数的值默认为0,可根据需要自行更改 ... -
python中的时间处理模块(二):datetime模块之timedelta类详解
2020-01-09 15:54:08datatime模块是在time模块的基础之上做了封装,提供了更多更好用的类供我们使用,常用的有date、time、datetime、timedelta、tzinfo。但是为了更灵活的处理时间,最好是将time模块和datetime模块中的精髓学习到... -
如何将datetime.timedelta转换为分钟,小时在Python?
2021-07-19 15:44:38duration = end_date - start_date I get output like this: datetime.timedelta(0, 5, 41038) How do I convert this into normal time like: 10 minutes, 1hour like this 解决方案 There's no built-in formatter...