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

Python-如何解析ISO 8601格式的日期?

万俟靖
2023-03-14
问题内容

我需要将RFC 3339字符串解析"2008-09-03T20:56:35.450686Z"Python的datetime类型。

我已经strptimePython标准库中找到了,但这不是很方便。

做这个的最好方式是什么?


问题答案:

python-dateutil包可以解析不仅RFC 3339日期时间字符串像在的问题,还包括其他ISO 8601的日期和时间字符串不符合RFC 3339(如那些没有UTC偏移,或那些代表仅一个日期)。

>>> import dateutil.parser
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686Z') # RFC 3339 format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686, tzinfo=tzutc())
>>> dateutil.parser.isoparse('2008-09-03T20:56:35.450686') # ISO 8601 extended format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903T205635.450686') # ISO 8601 basic format
datetime.datetime(2008, 9, 3, 20, 56, 35, 450686)
>>> dateutil.parser.isoparse('20080903') # ISO 8601 basic format, date only
datetime.datetime(2008, 9, 3, 0, 0)

请注意,这dateutil.parser.isoparse可能比更严格的方法更严格dateutil.parser.parse,但是它们两者都是相当宽容的,并且会尝试解释你传入的字符串。如果要消除任何误读的可能性,则需要使用比这两种方法都严格的方法功能。

Pypi名称是python-dateutil,不是dateutil(感谢code3monk3y):

pip install python-dateutil

如果你使用的是Python 3.7,请查看有关的答案datetime.datetime.fromisoformat。



 类似资料:
  • 问题内容: 我正在使用bootstrap-datetimepicker和ISO8601 datetime格式,如其选项部分所述 在我的控制器中 它以(console.log)将数据发送到后端 并保存为数据库 在我的模板中 我在HTML上看到的输出为 但是根据Angular doc,它应该用于格式 我想念的是什么? 问题答案: 现在,我已经创建了一个过滤器 作为依赖项添加为 并用作 并将日期显示为

  • 有没有办法将ISO8601日期与Java进行比较?比如,知道字符串日期是否是良好的格式,知道月份是否为负数,以及 我还在搜索如何知道互联网上是否有课程可以比较两个ISO8601日期?比如,如果我有:2000-12-12和1999-05-06。我如何比较这两个日期,使之在年、月和日之间有准确的差异?

  • 这是一个示例文档 我数到50999 当我为匹配条件添加日期字段时,如下所示,我没有得到任何值。 DBObject火柴=new BasicDBObject();match.put("data.type","score.type");match.put("body.name", new BasicDBObject("$存在",1));match.put("时间戳","2014-09-03T22:07:

  • 问题内容: 如何转换此 格式 ( ISO8601格式 ): 2014-03-13T09:05:50.240Z 为此( MySQL DATE格式 ): 2014-03-13 在PHP中? 问题答案: 尝试这个 完整的日期功能文档可以在这里找到:http : //php.net/manual/en/function.date.php PHP函数“ strtotime”不执行任何其他操作,然后将您的时间

  • 我想以yyyy-mm-dd格式存储今天的日期。在存储之前,我将今天的日期格式化,并再次解析格式化后的字符串。它以不同于我想要的格式给出了输出日期。我如何获得日期,将其格式化为' yyyy-mm-dd '并再次将其转换为日期,并希望输出格式为' yyyy-mm-dd '。请找到下面的代码,告诉我哪里错了 我得到的上述代码的输出是星期四 Mar 07 00:00:00 GMT 2013.但我希望输出为

  • 我有以下两个日期: 2009年10月8日 我正在使用Jackson将日期从rest api转换为joda Datetime。 我以为模式“dd MMM.yyyy”可以工作,但“may”没有点,所以在那一点上崩溃了。 有没有解决方案,或者我必须自己编写datetime解析器? jackson中的注释是: 所以只允许有一种约会模式。