如何计算Python中以下时间戳的时间差(以分钟为单位)?
2010-01-01 17:31:22
2010-01-03 17:31:22
Run Code Online (Sandbox Code Playgroud)
Ken*_*ane 98
如果日期的确切时间不同,则RSabet的答案不起作用.
原始问题:
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
Run Code Online (Sandbox Code Playgroud)
d2-d1为您提供datetime.timedelta,当您使用天数时,它只会显示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
Run Code Online (Sandbox Code Playgroud)
它仍然会给你相同的答案,因为它仍然会返回2天; 它忽略了timedelta的小时,分钟和秒.
更好的方法是将日期转换为通用格式,然后进行计算.最简单的方法是将它们转换为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
Run Code Online (Sandbox Code Playgroud)
Eva*_*ans 78
minutes_diff = (datetime_end - datetime_start).total_seconds() / 60.0
Run Code Online (Sandbox Code Playgroud)
小智 18
如果有人没有意识到这一点,一种方法是将Christophe和RSabet的答案结合起来:
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)
diff = d2 -d1
diff_minutes = (diff.days * 24 * 60) + (diff.seconds/60)
print(diff_minutes)
> 3043
Run Code Online (Sandbox Code Playgroud)
小智 8
要使用不同的时间日期进行计算:
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)
diff = d2-d1
diff_minutes = diff.seconds/60
Run Code Online (Sandbox Code Playgroud)
RSa*_*bet -46
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)
print (d2-d1).days * 24 * 60
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
96691 次 |
| 最近记录: |