我有JSON文件,里面有时间戳。时间戳的格式如下所示。
timestamp1 Fri Mar 27 15:25:24 NZDT 2015
timestamp2 Fri Mar 27 15:23:01 NZDT 2015
在上述两个时间戳之间,timestamp1的时间晚于timestamp2。
如何在python程序中比较这些时间戳,以便在从JSON文件中提取的数百个时间戳中获取最新的时间戳。我已经编写了程序来提取时间戳的人。我不知道如何比较它们。
# Import the os module, for the os.walk function
import os
import json
# Set the directory you want to start from
rootDir = '/Workspace/events_parts'
for dirName, subdirList, fileList in os.walk(rootDir):
print('Found directory: %s' % dirName)
for fname in fileList:
print('\t%s' % fname)
fname='events_parts/'+fname
with open(fname, 'r+') as f:
json_data = json.load(f)
ts = json_data['Timestamp']
print(ts)
答案 0 :(得分:2)
您需要将时间戳字符串转换为datetime
个对象。通常,我建议您使用strptime
。但是,您的字符串中有一个时区(NZDT
),documentation表示:
对%Z指令的支持基于tzname中包含的值以及日光是否为真。因此,它是特定于平台的,除了识别始终已知的UTC和GMT(并且被认为是非夏令时时区)。
相反,我们会使用python-dateutil package。
pip install python-dateutil
从这里开始,我们可以利用parse函数来获取日期时间对象。有了这个,你可以进行任何你需要的比较。
>>> from dateutil.parser import parse
>>> t1 = "Fri Mar 27 15:25:24 NZDT 2015"
>>> t2 = "Fri Mar 27 15:23:01 NZDT 2015"
>>> d1 = parse(t1)
>>> d2 = parse(t2)
>>> d1 > d2
True
答案 1 :(得分:1)
如果新西兰夏令时(NZDT)对您的所有数据都很常见,那么您可以使用此方法。 (仅当NZDT很常见时)
#for python3
import time
timestamp1 = 'Fri Mar 27 15:25:24 NZDT 2015'
timestamp2 = 'Fri Mar 27 15:23:01 NZDT 2015'
pattern = '%a %b %d %H:%M:%S NZDT %Y'
epoch_timestamp1 = int(time.mktime(time.strptime(timestamp1, pattern)))
epoch_timestamp2 = int(time.mktime(time.strptime(timestamp2, pattern)))
if epoch_timestamp1 > epoch_timestamp2:
print ("Timestamp1 is the latest")
else:
print ("Timestamp2 is the latest")
<强>输出强>
Timestamp1 is the latest