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

使用dateutil解析日期时遇到问题

司浩壤
2023-03-14
问题内容

我正在使用python-dateutil从字符串中解析日期:

import dateutil.parser
print dateutil.parser.parse('some null string', fuzzy=True).date()
2012-10-18
print dateutil.parser.parse('some 31 Oct 2012 string', fuzzy=True).date()
2012-10-31

我期望的是dateutil.parser.parse('some null string', fuzzy=True).date()引发异常,但它返回的是当前日期。如果在提供的字符串中找不到日期,有人可以告诉我如何避免获取当前日期吗?

提前致谢。


问题答案:

请参阅dateutil文档,特别是解析函数(强调我的):

此外,可以使用以下关键字参数:

默认值 如果给出,则它必须是日期时间实例。解析日期中缺少的任何字段都将从该实例复制。 默认值为当前日期,上午00:00:00

…(剪断)…

模糊 如果将Fuzzy设置为True,则字符串中的未知标记将被忽略。

假设您已将设置fuzzyTrue,则不会抛出任何异常,因为它只会忽略所有未知标记。并且,由于default未传递参数,因此将返回当前日期。

因此,解决方案是要么fuzzy设置为False,以使无效的格式字符串将引发异常;否则,请执行以下操作:或检查返回的日期时间是否等于上午00:00:00的当前日期,以表明转换失败。



 类似资料:
  • 由来 考虑到Java本身对日期时间的支持有限,并且Date和Calendar对象的并存导致各种方法使用混乱和复杂,故使用此工具类做了封装。这其中的封装主要是日期和字符串之间的转换,以及提供对日期的定位(一个月前等等)。 对于Date对象,为了便捷,使用了一个DateTime类来代替之,继承自Date对象,主要的便利在于,覆盖了toString()方法,返回yyyy-MM-dd HH:mm:ss形式

  • 问题内容: 我有两个时间戳,它们以两种不同的格式描述同一时刻。 和。 我用Joda-Time用两个不同的日期格式解析时间戳。最后,我想有两个DateTime对象,它们在同一时刻相同。 DateFormatter提供了几种控制时区和语言环境的方法,但我无法使其正常工作。 这是我想工作的代码: 问题答案: 如果您的默认时间zome是Europe / Berlin,则2010-10-03 18:58:0

  • 我想使用此服务:http://fast-gorge.herokuapp.com/contacts我设置Retrofit解析如下: 其中,我的日期格式为: 然而,当我运行该应用程序时,我进入了failure(reformerror error)方法,并显示消息:reformation。改装错误:com。谷歌。格森。JsonSyntaxException:2014-07-31T07:49:23.000

  • 问题内容: 具有创建仅时间Date对象的函数。(为什么需要这样做是一个长话短说,在这种情况下是无关紧要的,但是我需要与XML世界中的一些东西进行比较,其中TIME(即仅时间)是一个有效的概念)。 可能至少还有其他几种方法可以在Java中创建只有时间的日期(或更确切地说,日期部分为1970-01-01的日期),但是我的问题实际上不是关于此的。 我的问题是,这段代码在生产中运行了很长时间之后,开始在第

  • 我需要在Dart中的对象中解析这种日期“Mon,2014年8月11日12:53 pm PDT”。 有一个静态方法,它接受ISO 8601格式的子集,而不是我的情况。 类允许您定义要分析的日期模式。我创建了一个模式“EEE,dd-MMM-yyy-hh:mm-a-zzz”。 使用它,我得到一个读取一个。 看起来解析器不喜欢PM标记的情况(我已经提出了一个问题)。 我试着解决整个管柱上套管的问题。使用字

  • 我从服务器收到了很奇怪的日期格式。它看起来是2017-03-07T15:08:01.513544Z,奇怪的部分是“Z”之前的最后六个字符,因为我在服务器的最多响应中只看到了三个毫秒的符号。我试图用解析它,掩码为yyyy-mm-dd't'hh:mm:ss.ss'z',它适用于除api 16(4.1)之外的所有android版本。在developer.android.com中,我看到了类似.sssxx