【问题标题】:How do I get .to_datetime() to stop offsetting by UTC in string [duplicate]如何让 .to_datetime() 停止在字符串中偏移 UTC [重复]
【发布时间】:2016-09-13 11:02:26
【问题描述】:

我正在转换 .CSV 文件中作为字符串给出的时间戳。格式如下:

2016-06-06T09:30:00.000856632-04:00

当我使用 .to_datetime() 将其转换为日期对象时,它会偏移 UTC 时间。在本例中,上午 9:30 变为下午 1:30:

2016-06-06 13:30:00.000856632

我阅读了该函数的文档,并认为将 UTC = False 设置为参数可以解决此问题,但它只是将时间偏移了不同的量。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    字符串有 -4 小时的偏移量。在转换之前删除它:

    >>> pd.to_datetime("2016-06-06T09:30:00.000856632-04:00"[:-6])
    Timestamp('2016-06-06 09:30:00.000856632')
    

    【讨论】:

      【解决方案2】:

      转换后可以用timedelta减去4小时的偏移量:

      import datetime
      import pandas as pd
      pd.to_datetime("2016-06-06T09:30:00.000856632-04:00") + datetime.timedelta(hours = -4)
      # Timestamp('2016-06-06 09:30:00.000856632')
      

      【讨论】:

        【解决方案3】:

        Pandas .to_datetime() 有一个格式参数。

        格式:字符串,默认无

        strftime 解析时间,例如“%d/%m/%Y”,注意“%f”会一直解析到纳秒。

        .to_datetime(format="%d/%m/%Y")
        

        会收获

        '11/03/2016'

        format 遵循与.strftime() 相同的 Python datetime 格式。如需时间格式参数的完整列表,请see this reference

        【讨论】:

        • 格式化是否防止时间偏移?我的问题不是格式而是时区偏移
        • 我已更新答案以包含文档。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-26
        • 2019-04-08
        • 1970-01-01
        • 2016-07-06
        • 2021-03-13
        • 2013-11-07
        相关资源
        最近更新 更多