【问题标题】:Python Date/Time FormattingPython 日期/时间格式
【发布时间】:2013-02-13 05:29:58
【问题描述】:

我正在使用一个 API,它返回一个 JSON 字符串,其中包含以下日期/时间:

2013-03-14T14:15:23-07:00

我得到日期和时间,精确到秒。但最后 5 个字符让我感到困惑。我猜这是一个UTC偏移量。 (山区时间)我不知道该怎么做是将上面的字符串与python中的日期/时间进行比较。 T也让我失望。

如何编码 python 日期/时间字符串以匹配上述内容?

【问题讨论】:

标签: python string datetime utc


【解决方案1】:

如果您使用 python-dateutil 库 (https://crate.io/packages/python-dateutil/),您可以将该值转换为 datetime

>>> dateutil.parser.parse('2013-03-14T14:15:23-07:00')
datetime.datetime(2013, 3, 14, 14, 15, 23, tzinfo=tzoffset(None, -25200))

【讨论】:

  • 太棒了!这正是我所需要的。我现在唯一坚持的事情是尝试以偏移感知格式获取当前日期时间,以便我可以比较两者。我仍在尝试了解 Python 如何处理日期/时间。
  • 您应该可以在约会时间使用.replace(tzinfo=...)。给它一个时区让它知道,None 让它变得幼稚。
【解决方案2】:

您正在查看ISO 8601 日期格式。您可以使用package to parse it 或自己做。

可以使用 datetime.strptime 来解析:

>>> ts='2013-03-14T14:15:23-07:00'
>>> datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')
datetime.datetime(2013, 3, 14, 14, 15, 23)

然后只需添加/减去时间增量(对于“天真”对象):

>>> datetime.timedelta(hours=int(ts[-6:-3]))
datetime.timedelta(-1, 61200)

所以:

>>> d=datetime.datetime.strptime(ts[0:-6],'%Y-%m-%dT%H:%M:%S')+datetime.timedelta(hours=int(ts[-6:-3]))
>>> d
datetime.datetime(2013, 3, 14, 7, 15, 23)

棘手的部分是 TZ 是可选的,无论您是添加/减去时间偏移还是在日期对象中设置时区。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2012-03-27
    • 2013-07-09
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多