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

Java如何使用SimpleDateFormat解析多种格式的日期

昌学
2023-03-14
问题内容

我正在尝试解析文档中的某些日期。看来用户已经以类似但并非确切的格式输入了这些日期。

格式如下:

9/09
9/2009
09/2009
9/1/2009
9-1-2009 

尝试解析所有这些的最佳方法是什么?这些似乎是最常见的,但是我想让我感到困扰的是,如果我的模式“ M / yyyy”永远不会在“ MM / yyyy”之前出现,我是否必须设置try / catch块以最小限制嵌套到最大限制方式?看来肯定会花费很多代码重复才能实现此目的。


问题答案:

你需要SimpleDateFormat为每个不同的模式使用不同的对象。也就是说,由于以下原因,你不需要那么多不同的对象:

数字:对于格式设置,图案字母的数量是最小位数,较短的数字用零填充此数量。对于解析,除非需要将两个相邻字段分开,否则将忽略模式字母的数量。

因此,你将需要以下格式:

  • "M/y"(即盖9/099/201909/2019
  • "M/d/y"(涵盖9/1/2019
  • "M-d-y"(涵盖9-1-2019

因此,我的建议是编写一种工作方式如下(未测试)的方法:

// ...
List<String> formatStrings = Arrays.asList("M/y", "M/d/y", "M-d-y");
// ...

Date tryParse(String dateString)
{
    for (String formatString : formatStrings)
    {
        try
        {
            return new SimpleDateFormat(formatString).parse(dateString);
        }
        catch (ParseException e) {}
    }

    return null;
}


 类似资料:
  • 本文向大家介绍java日期格式化SimpleDateFormat的使用详解,包括了java日期格式化SimpleDateFormat的使用详解的使用技巧和注意事项,需要的朋友参考一下 日期和时间格式由 日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起

  • 我无法设置日期格式。接受作为参数。所以我创建了一个新的 它说below Date()方法不推荐使用,并且我在运行时得到below异常。 例外情况: 我的数据库的日期格式为-2012-02-16T00:00:00.000-0500我需要将它转换为格式为:dd-MMM-yyyy HH:MM:SS的字符串 我正在使用Java6

  • 本文向大家介绍使用SimpleDateFormat格式化日期,包括了使用SimpleDateFormat格式化日期的使用技巧和注意事项,需要的朋友参考一下 SimpleDateFormat是一个具体的类,用于以对语言环境敏感的方式来格式化和解析日期。SimpleDateFormat允许您从选择任何用户定义的日期时间格式模式开始。 示例 这将产生以下结果- 输出结果 简单的DateFormat格式代

  • 问题内容: Java 8添加了新的java.time API,用于处理日期和时间(JSR 310)。 我将日期和时间作为字符串(例如)。如何从给定的字符串中获取实例? 处理完对象后:如何将实例转换回具有上述格式的字符串? 问题答案: 解析日期和时间 要从字符串创建对象,可以使用方法。它使用字符串和作为参数。所述用于指定的日期/时间模式。 格式化日期和时间 要创建对象的格式化字符串,可以使用方法。

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

  • 问题内容: 当我到达下面的df.date()行时,使用此格式的日期时应用程序崩溃: 致命错误:解开Optional值时意外发现nil 我也看到了这一点: 错误:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_I386_INVOP,子代码= 0x0) 我有可以采用这种格式的字符串 但有时采用这种格式 这是在上述格式下崩溃的代码段: 如何使用基本一个功能处理两种格式? 问题答