【问题标题】:Extract HH:MM PM from '2022-02-18T00:00:00.000Z'从 \'2022-02-18T00:00:00.000Z\' 中提取 HH:MM PM
【发布时间】:2022-11-19 00:29:04
【问题描述】:

此字符串中的 2022-02-18T00:00:00.000Z 是这次是 07:00 PM 的信息,这是东部时间 (ET),这看起来是正确的,因为 ET 比 UTC 晚 5 小时。我们如何(a)先从字符串转换为(日期时间?,时间戳?),然后将得到的时间对象转换为07:00 PM?尝试了什么:

from datetime import datetime
datetime.strptime('2022-02-18T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%f')

...引发错误time data '2022-02-18T00:00:00.000Z' does not match format '%Y-%m-%d %H:%M:%S.%f'。这里做错了什么?

【问题讨论】:

  • 你少了一个 Z。'%Y-%m-%dT%H:%M:%S.%fZ'
  • 您还可以通过执行以下操作在解析中包含时区:'%Y-%m-%dT%H:%M:%S.%f%z' 这将为您提供输出:datetime.datetime(2022, 2, 18, 0, 0, tzinfo=datetime.timezone.utc)
  • 这回答了你的问题了吗? How do I parse an ISO 8601-formatted date?
  • 它并没有让我一路走到07:00 PM
  • 不要使用文字 Z !使用%z。 Z忽略时区/UTC

标签: python datetime iso8601


【解决方案1】:

总结上面 cmets 的所有内容:

datetime.strptime('2022-02-18T00:00:00.000Z', '%Y-%m-%dT%H:%M:%S.%f%z').astimezone(ZoneInfo('America/New_York')).strftime('%I:%M %p')

返回我们所需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2021-05-16
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-07
    相关资源
    最近更新 更多