Python - 日期时间不能正确计算闰秒?

 乐民修德 发布于 2023-02-04 19:02

我正在解析一些具有leapsecond timestampe datetime的数据2012-06-30T23:59:60.209215.我使用以下代码来解析该字符串并转换为datetime对象:

    nofrag, frag = t.split('.')
    nofrag_dt = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")
    dt = nofrag_dt.replace(microsecond=int(frag))

Python文档声称这不应该是%S接受的问题[0, 61].但是,我在上面的时间戳中得到了这个错误

nofrag_dt = datetime.datetime.strptime(nofrag, "%Y-%m-%dT%H:%M:%S")
ValueError: second must be in 0..59

谢谢

1 个回答
  • 文档%S说:

    与时间模块不同,datetime模块不支持闰秒.

    时间字符串"2012-06-30T23:59:60.209215"表示时间是UTC(这是当前的最后一个闰秒):

    import time
    from calendar import timegm
    from datetime import datetime, timedelta
    
    time_string = '2012-06-30T23:59:60.209215'
    time_string, dot, us = time_string.partition('.')
    utc_time_tuple = time.strptime(time_string, "%Y-%m-%dT%H:%M:%S")
    dt = datetime(1970, 1, 1) + timedelta(seconds=timegm(utc_time_tuple))
    if dot:
        dt = dt.replace(microsecond=datetime.strptime(us, '%f').microsecond)
    print(dt)
    # -> 2012-07-01 00:00:00.209215
    

    2023-02-04 19:05 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有