比较Python中的两个时间戳字符串

时间:2015-03-27 04:56:54

标签: python json

我有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)

2 个答案:

答案 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