python datetime time timedelta

datetime

参考:https://blog.csdn.net/lovedingd/article/details/134929553

time

timedelta

参考:https://geek-docs.com/python/python-ask-answer/981_python_formatting_timedelta_objects.html
timedelta 是 Python 中的一个类,用于表示两个日期或时间之间的差异。它可以表示年、月、日、小时、分钟和秒等单位的时间差。timedelta 对象非常有用,可以用于日期和时间的计算,也可以格式化为字符串以显示给用户。

timedelta 对象的创建

from datetime import datetime, timedelta

# 创建一个以秒为单位的时间差为 3600 秒的 timedelta 对象
td1 = timedelta(seconds=3600)
print(td1)					# 输出 1:00:00

# 创建一个以分钟为单位的时间差为 120 分钟的 timedelta 对象
td2 = timedelta(minutes=120)
print(td2)					# 输出 2:00:00

# 创建一个以天为单位的时间差为 5 天的 timedelta 对象
td3 = timedelta(days=5)
print(td3)					# 输出 5 days, 0:00:00

timedelta 对象的属性和方法

timedelta 对象具有多个属性和方法,用于获取和操作时间间隔的不同部分。下面是一些常用的属性和方法:

days:获取 timedelta 对象的天数部分。返回一个整数值。
seconds:获取 timedelta 对象的秒数部分。返回一个整数值。
total_seconds():获取 timedelta 对象的总秒数。
total_seconds():获取 timedelta 对象的总秒数。

以下是使用这些属性和方法的示例:

# 创建一个时间差为 2 小时 30 分钟的 timedelta 对象
td = timedelta(hours=2, minutes=30)

# 获取 timedelta 对象的天数和秒数
print(td.days)      		# 输出 0,因为仅包含小时和分钟
print(td.seconds)   		# 输出 9000,表示 2 小时 30 分钟共有 9000 秒

# 获取 timedelta 对象的总秒数
print(td.total_seconds()) 	# 输出 9000.0

# 将 timedelta 对象的秒数转换为分钟
print(td.seconds / 60)  	# 输出 150.0

timedelta 对象的格式化

timedelta 对象默认以 [days,] [hh:mm:ss] 的格式进行输出。但我们也可以根据需要使用不同的格式进行定制。以下是一些常见的格式化选项:

%d:天数的两位数表示(01-31)。
%H:小时的两位数表示(00-23)。
%M:分钟的两位数表示(00-59)。
%S:秒数的两位数表示(00-59)。

下面是一个使用上述格式化选项的示例:

# 创建一个时间差为 1 天 2 小时 30 分钟的 timedelta 对象
td = timedelta(days=1, hours=2, minutes=30, seconds=1)
print(td)						# 输出: 1 day, 2:30:01
print(td.seconds // 3600)		# 输出: 2
print(td.seconds % 3600 // 60)	# 输出: 30
print(td.seconds % 60)  		# 输出: 1

# 格式化 timedelta 对象为字符串
def timedelta_to_str(delta: timedelta):
    if delta.days == 0:
        return "{:02d}:{:02d}:{:02d}".format(delta.days, delta.seconds//3600, (delta.seconds%3600)//60, delta.seconds%60)
    elif delta.days == 1:
        return "{:d} day, {:02d}:{:02d}:{:02d}".format(delta.days, delta.seconds//3600, (delta.seconds%3600)//60, delta.seconds%60)
    else:
        return "{:d} days, {:02d}:{:02d}:{:02d}".format(delta.days, delta.seconds//3600, (delta.seconds%3600)//60, delta.seconds%60)

# 格式化字符串对象为 timedelta 
def str_to_timedelta(delta: str):
    days, hours, minutes, seconds = 0, 0, 0, 0
    if ' ' in delta:
        days_str, format_str, time_str = delta.split(' ')
        days = int(days_str)
        hours, minutes, seconds = [int(i) for i in time_str.split(':')]
    else:
        hours, minutes, seconds = [int(i) for i in delta.split(':')]
    return timedelta(days=days, hours=hours, minutes=minutes, seconds=seconds)

formatted_td = timedelta_to_str(td)
print("format", formatted_td)			# 输出: 1 day, 02:30:01
print(str_to_timedelta(formatted_td))	# 输出: 1 day, 2:30:01
  • 10
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中,datetime.timedelta是一个表示时间差的对象。可以使用两个date或datetime对象相减来得到一个timedelta对象。timedelta对象可以用于在日期和时间上进行加减操作。 例如,可以使用timedelta来表示一段时间的差异,比如几小时前、几天前等。可以通过指定小时、分钟、秒等参数来创建timedelta对象,并将其与datetime对象相加或相减。 以下是一些使用timedelta的示例代码: ```python import datetime now = datetime.datetime.now() t = now - datetime.timedelta(hours=3) print(t) # 3小时前的时间 t2 = now - datetime.timedelta(hours=3, minutes=30) print(t2) # 3小时30分钟前的时间 t3 = now - datetime.timedelta(hours=3, seconds=30) print(t3) # 3小时30秒前的时间 t4 = now - datetime.timedelta(hours=3, seconds=30, days=3) print(t4) # 3天3小时30秒前的时间 t5 = datetime.timedelta(hours=3, seconds=22).total_seconds() print(t5) # 得到总秒数,类型是float型 ``` 另外,timedelta还可以与datetime对象配合使用进行时间的加减操作。可以通过指定天数、小时、分钟、秒等参数来创建timedelta对象,并将其与datetime对象相加或相减。 以下是一个使用timedeltadatetime对象进行时间加减的示例代码: ```python from datetime import datetime, timedelta dt = datetime(2012, 12, 12, 23, 59, 59) dt1 = dt + timedelta(days=-1) # 昨天 dt2 = dt + timedelta(days=1) # 明天 dt3 = dt + timedelta(hours=-1) # 上一个小时 dt4 = dt + timedelta(hours=1) # 下一个小时 dt5 = dt + timedelta(seconds=-1) # 上一秒 dt6 = dt + timedelta(seconds=1) # 下一秒 ``` 总结来说,datetime.timedelta是一个用于表示时间差的对象,可以用于在日期和时间上进行加减操作。它可以与date类的对象或datetime类的对象结合使用,但不能单独与time类的对象结合使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值