【问题标题】:Unable to convert EST/EDT timezone to another format无法将 EST/EDT 时区转换为另一种格式
【发布时间】:2022-06-27 15:30:35
【问题描述】:

通过 Python,我试图将未来日期转换为另一种格式并减去当前日期,但它会抛出错误。

Python 版本 = Python 3.6.8

from datetime import datetime
enddate = 'Thu Jun 02 08:00:00 EDT 2022'
todays = datetime.today()
print ('Tpday =',todays)
Modified_date1 = datetime.strptime(enddate, ' %a %b %d %H:%M:%S %Z %Y')
subtract_days= Modified_date1 - todays
print (subtract_days.days)

输出

Today = 2022-02-02 08:06:53.687342

Traceback (most recent call last):
  File "1.py", line 106, in trusstore_output
    Modified_date1 = datetime.strptime(enddate1, ' %a %b %d %H:%M:%S %Z %Y')
  File "/usr/lib64/python3.6/_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "/usr/lib64/python3.6/_strptime.py", line 362, in _strptime
    (data_string, format))
ValueError: time data ' Thu Jun 02 08:00:00 EDT 2022' does not match format ' %a %b %d %H:%M:%S %Z %Y'

During handling of the above exception, another exception occurred:

Linux 服务器日期

$ date
Wed Feb  2 08:08:36 CST 2022

【问题讨论】:

    标签: python-3.6 python-datetime


    【解决方案1】:

    Documentation 中的第 6 点表明并非所有时区格式都可以由 strptime 解析。

    %Z [...] 因此,居住在日本的人可能将 JST、UTC 和 GMT 作为有效值,但可能不是 EST。它会针对无效值引发 ValueError。

    如果可能,您可以使用 -u 标志获取服务器日期并解析 UTC 时间戳。

    date -u
    Mi 2. Feb 14:39:11 UTC 2022
    

    PS: 还要注意字符串中的前导空格。 如果 EDT 在您的系统上可用,则值错误可能是 enddate 和 enddate1 混淆的结果。 ' Thu Jun 02 08:00:00 EDT 2022'enddate = 'Thu Jun 02 08:00:00 EDT 2022'

    【讨论】:

      【解决方案2】:

      很遗憾,strptime 仅支持一部分时区。

      如果您可以确保输入不包含除 EDT 或 EST 之外的任何其他时区,您可以将这些时区替换为相应的 UTC 偏移量并使用 %z 而不是 %Z

      from datetime import datetime
      
      date_str = "Thu Jun 02 08:00:00 EDT 2022"
      
      date_str = date_str.replace("EDT", "-0400")
      date_str = date_str.replace("EST", "-0500")
      date_parsed = datetime.strptime(date_str, "%a %b %d %H:%M:%S %z %Y")
      
      # 2022-06-02 08:00:00-04:00
      print(date_parsed)
      

      【讨论】:

        猜你喜欢
        • 2011-07-26
        • 2020-09-06
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        • 1970-01-01
        相关资源
        最近更新 更多