当前位置: 首页 > 面试题库 >

如何将Python的.isoformat()字符串转换回datetime对象

姬英武
2023-03-14
问题内容

因此,在Python 3中,您可以使用.isoformat()生成ISO8601日期,但是由于Python自身的datetime指令不正确,因此您无法将isoformat()创建的字符串转换回datetime对象。也就是说,%z= 0500,而不是05:00(由.isoformat()生成)。

例如:

>>> strDate = d.isoformat()
>>> strDate
'2015-02-04T20:55:08.914461+00:00'

>>> objDate = datetime.strptime(strDate,"%Y-%m-%dT%H:%M:%S.%f%z")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\Lib\_strptime.py", line 500, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python34\Lib\_strptime.py", line 337, in _strptime
    (data_string, format))
ValueError: time data '2015-02-04T20:55:08.914461+00:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'

来自Python的strptime文档:(https://docs.python.org/2/library/datetime.html#strftime-
strptime-behavior

%z UTC偏移量,格式为+ HHMM或-HHMM(如果对象是天真对象,则为空字符串)。(空),+ 0000,-0400,+ 1030

因此,简而言之,Python甚至不遵守其自己的字符串格式指令。

我知道datetime在Python中已经很糟糕了,但这确实超出了无理的愚蠢之地。

告诉我这不是真的。


问题答案:

事实证明,这是此问题的当前最佳“解决方案”:

pip install python-dateutil

然后…

import datetime
import dateutil

def getDateTimeFromISO8601String(s):
    d = dateutil.parser.parse(s)
    return d


 类似资料:
  • 问题内容: 我有以下日期: 我需要知道这是date在 datetime(2009,04,01) 之前还是之后,而且我似乎找不到找到将字符串转换为可以将其与 datetime(2009,04,01) 比较的 方法。 ) 以一种有意义的方式。 问题答案: 由于该字符串采用ISO格式,因此可以直接将其与您提到的ISO格式版本进行有意义的比较: 如您所见,虽然您无法将字符串与日期时间对象进行比较,但只要字

  • 问题内容: 我有一些日期时间(如字符串)和一些空值作为“ nan”的系列: 我正在尝试将这些转换为日期时间: 但我得到了错误: 因此,我尝试将其转换为实际的null: 并重复: 但是然后我得到了错误: 必须是字符串,而不是浮点数 解决此问题的最快方法是什么? 问题答案: 只需使用并设置为处理达芙数据: 调用的问题是,如果字符串或dtype不正确,它将引发错误。 如果您这样做,那么它将起作用: 但是

  • 我已经研究了很多关于如何将PHP DateTime对象转换为String的网站。我总是看到"String to DateTime"而不是"DateTime to String" PHP DateTime可以被回显,但我想用PHP字符串函数处理我的DateTime。 我的问题是,如何使PHP dateTime对象成为从此类代码开始的字符串:

  • 问题内容: 我已经研究了很多站点,有关如何将PHP DateTime对象转换为String。我总是看到“从String到DateTime”而不是“从DateTime到String” 可以回显PHP DateTime,但是我想用PHP字符串函数处理DateTime。 我的问题是如何从这种代码开始使PHP dateTime对象成为字符串: 问题答案: 您可以使用该类的方法: 如果由于某种原因失败,它将

  • 问题内容: 在将日期字符串转换为中的对象时,我看到了很多东西,但我想采用另一种方法。 我有 我想将其转换为类似的字符串。 问题答案: 你可以使用来帮助设置日期格式。 例如, 将产生:

  • 问题内容: 我想获取一串字符串并将其转换为单词对流。例如: 我有: 我想要:。 这几乎与Zipping相同,如使用带有Lambda的JDK8的Zipping流中概述的那样(java.util.stream.Streams.zip) 但是,这会产生: 以下代码有效,但显然是错误的方法(不是线程安全的等): 问题答案: 如果你: 不喜欢使用流中所有字符串创建列表的想法 不想使用外部库 喜欢弄脏你的手