有时候我们会得到一大堆的时间数据,我们想计算最大的时间跨度但又迫于数据都是字符串类型,而无从下手。下面我稍加总结下,使用的是Python语言,直接上代码:
import datetime
date = ['2019/2/28 11:25:05',
'2019/2/14 20:00:00',
'2019/7/19 18:19:54',
'2019/8/19 11:48:23',
'2019-11-22 16:54:42']
for i, day in enumerate(date):
try:
# 如果字符串是 年/月/日 时:分:秒 格式
t = datetime.datetime.strptime(str(day), '%Y/%m/%d %H:%M:%S')
except ValueError:
# 如果字符串是 年-月-日 时:分:秒 格式
t = datetime.datetime.strptime(str(day), '%Y-%m-%d %H:%M:%S')
date[i] = t
interval = max(date)-min(date)
print(interval.days) #返回相隔的天数
print(interval.seconds) #返回相隔的秒数
知识点
-
函数
datetime.datetime.strptime(date_string, format)
,它可以将按照一定的格式字符串类型的时间转换为datetime.datetime
类。datetime.datetime
类是Python的一个时间类,它有year、month、day、hour、minute、second属性,且它们之间可以直接相加减或做比较运算,非常方便。 -
在数据处理上,我们拿到的时间数据可能格式各异,有
年-月-日
、年/月/日
这些不同的样式,函数datetime.datetime.strptime(date_string, format)
可以依据format
对字符串进行有针对的处理(详细的用法见Python string to datetime – strptime()),这里使用python中的try
异常处理语句,也可以用if
-
两个
datetime.datetime
相减返回一个时间间隔datetime.timedelta
类,它常用的属性有days
、seconds
,分别返回间隔的天数和秒数,这里要注意它并没有年、月、时、分等属性,我们需要自己按照常识转换。