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

在python中解析可以是多种格式的日期

司马庆
2023-03-14
问题内容

我想解析一个日期,它可以是几种我事先知道的格式。如果无法解析,则返回nil。在红宝石中,我确实这样:

DATE_FORMATS = ['%m/%d/%Y %I:%M:%S %p', '%Y/%m/%d %H:%M:%S', '%d/%m/%Y %H:%M', '%m/%d/%Y', '%Y/%m/%d']

def parse_or_nil(date_str)
    parsed_date = nil
    DATE_FORMATS.each do |f|
        parsed_date ||= DateTime.strptime(date_str, f) rescue nil
    end
    parsed_date
end

这是简洁而有效的。如何在Python中做同样的事情?


问题答案:

您可以使用try/exceptcatchValueError来尝试使用不匹配的格式时发生的情况。如@Bakuriu所述,您可以在找到匹配项时停止迭代以避免不必要的解析,然后在my_date未定义因为未找到匹配格式而定义行为时:

您可以使用try/exceptcatchValueError来尝试使用不匹配的格式时发生的情况:

from datetime import datetime

DATE_FORMATS = ['%m/%d/%Y %I:%M:%S %p', '%Y/%m/%d %H:%M:%S', '%d/%m/%Y %H:%M', '%m/%d/%Y', '%Y/%m/%d']
test_date = '2012/1/1 12:32:11'

for date_format in DATE_FORMATS:
    try:
        my_date = datetime.strptime(test_date, date_format)
    except ValueError:
        pass
    else:
      break
else:
  my_date = None

print my_date # 2012-01-01 12:32:11
print type(my_date) # <type 'datetime.datetime'>


 类似资料:
  • 问题内容: 在Java中解析此日期格式的最简单方法是什么? 我在Java中阅读了DateFormat api,却找不到采用字符串甚至这种类型的日期格式作为要解析的参数的方法?当我说的是解析时,我的意思是我想将“日期(月,日,年)”,“时间”和“时区”提取到单独的字符串对象中。 提前致谢 问题答案: 另一个答案是,由于您似乎只专注于拆开(恕我直言,这不是一个好主意)。我们假设字符串是有效的ISO86

  • 问题内容: 我正在尝试解析文档中的某些日期。看来用户已经以类似但并非确切的格式输入了这些日期。 格式如下: 尝试解析所有这些的最佳方法是什么?这些似乎是最常见的,但是我想让我感到困扰的是,如果我的模式“ M / yyyy”永远不会在“ MM / yyyy”之前出现,我是否必须设置try / catch块以最小限制嵌套到最大限制方式?看来肯定会花费很多代码重复才能实现此目的。 问题答案: 你需要为每

  • 问题内容: 我在中收到格式日期。我如何解析它得到和。 ISO格式的日期: 问题答案: 一些参考 http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html http://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html 希望能帮助到你

  • 问题内容: 我有三个日期格式:,,。 是否可以验证和解析诸如or或or之类的字符串? 问题答案: 尝试每种格式,看看是否有效:

  • 问题内容: 我需要将字符串解析为类型。 我已经在标准库中找到了,但这不是很方便。 做这个的最好方式是什么? 问题答案: 该包可以解析不仅RFC 3339日期时间字符串像在的问题,还包括其他ISO 8601的日期和时间字符串不符合RFC 3339(如那些没有UTC偏移,或那些代表仅一个日期)。 请注意,这可能比更严格的方法更严格,但是它们两者都是相当宽容的,并且会尝试解释你传入的字符串。如果要消除任

  • 我正在开发一个应用程序,它应该接受任意格式的日期 - 换句话说,如果它像日期一样走路,像日期一样说话,它就是一个日期。 我试图调整moment.js包中的日期格式解析器以生成格式字符串并取得部分成功,但遇到了输入字符串中包含一些无法识别的元素的情况。 例如,似乎没有合适的格式来处理字符串 - 或者,至少有一个对我来说似乎很清楚,但也许我在文档中遗漏了一些东西。 我看了https://pub.dev