【问题标题】:Converting log time stamp Date Time offset/dst to epoch time将日志时间戳日期时间偏移量/dst 转换为纪元时间
【发布时间】:2016-10-23 21:34:04
【问题描述】:

我正在尝试转换如下所示的日期/时间戳:

20160131|235501[-0700/0] 20160621|225549[-0600/1]

到纪元时间。这些来自位于不同时区的远程计算机,因此我需要一种仅适用于时间戳而不适用于本地计算机时间的方法。

我发现了一个类似的问题,但由于时间戳来自与本地计算机不同的时区,因此我无法找到关于如何正确处理偏移作为一般情况的明确答案。 python 文档没有为我提供足够的上下文来理解如何使用时间偏移。

由于这段代码需要在小型ARM系统上运行,我只限于python 2.7.9

任何帮助将不胜感激。

【问题讨论】:

    标签: python time epoch


    【解决方案1】:

    肯定有一种更 Pythonic 的方式来做到这一点,但如果你可以安装 dateutil,也许这样的东西可以工作:

    # epoch_date.py    
    import datetime
    from dateutil.parser import parse
    import re
    
    raw_dts = '20160131|235501[-0700/0] 20160621|225549[-0600/1]'
    dts = raw_dts.split(' ')
    print '{:27s} {:5}'.format('date/time stamp', 'epoch')
    for dt in dts:
        dt_fmt = re.compile(r'[^\d-]+')
        time_str = dt_fmt.sub('', dt)
        time_date = ''.join(time_str[:-1])
        date_obj = parse(time_date)
        tz = date_obj.tzinfo
        epoch_fmt = (date_obj - datetime.datetime(1970,1,1,tzinfo=tz)).total_seconds()
        print '{:28s}{:7.1f}'.format(dt, epoch_fmt)
    

    将打印

    $ python epoch_date.py
    date/time stamp             epoch
    20160131|235501[-0700/0]    1454284501.0
    20160621|225549[-0600/1]    1466549749.0
    

    Ingore 大多数只是将日期列表格式化为输出,但其想法是使用 re 将文本组织成 datetime 对象,该对象可由 datetime 解析

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 2018-08-03
      • 2013-01-08
      • 2012-09-06
      • 2018-02-20
      • 1970-01-01
      • 2021-03-01
      • 1970-01-01
      • 2016-04-29
      • 2018-04-24
      相关资源
      最近更新 更多