python现在时间减去过去时间等于20分钟怎么写_Python中以分钟为单位的日期差

RSabet's answer在日期不具有相同精确时间的情况下不起作用。

原始问题:from datetime import datetime

fmt = '%Y-%m-%d %H:%M:%S'

d1 = datetime.strptime('2010-01-01 17:31:22', fmt)

d2 = datetime.strptime('2010-01-03 17:31:22', fmt)

daysDiff = (d2-d1).days

print daysDiff

> 2

# Convert days to minutes

minutesDiff = daysDiff * 24 * 60

print minutesDiff

> 2880

d2-d1给您一个datetime.timedelta,当您使用days时,它只显示timedelta中的天数。在这种情况下,它的工作很好,但如果你有以下。from datetime import datetime

fmt = '%Y-%m-%d %H:%M:%S'

d1 = datetime.strptime('2010-01-01 16:31:22', fmt)

d2 = datetime.strptime('2010-01-03 20:15:14', fmt)

daysDiff = (d2-d1).days

print daysDiff

> 2

# Convert days to minutes

minutesDiff = daysDiff * 24 * 60

print minutesDiff

> 2880 # that is wrong

它仍然会给你相同的答案,因为它仍然返回2天;它忽略了时间增量中的小时、分钟和秒。

更好的方法是将日期转换为通用格式,然后进行计算。最简单的方法是将它们转换为Unix时间戳。这是执行此操作的代码。from datetime import datetime

import time

fmt = '%Y-%m-%d %H:%M:%S'

d1 = datetime.strptime('2010-01-01 17:31:22', fmt)

d2 = datetime.strptime('2010-01-03 20:15:14', fmt)

# Convert to Unix timestamp

d1_ts = time.mktime(d1.timetuple())

d2_ts = time.mktime(d2.timetuple())

# They are now in seconds, subtract and then divide by 60 to get minutes.

print int(d2_ts-d1_ts) / 60

> 3043 # Much better

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值