java - 在 Java 中检查 MM-dd-yyyy 和 dd-MM-yyyy 格式

标签 java

我有一些包含不同格式日期的数据,例如:yyyy-dd-MMyyyy-MM-ddEEE dd-MM- yy

我正在尝试找到一种方法来区分 dd-MM-yyyyMM-dd-yyyy。 我知道如果 dd 小于 12,我无法确定格式,但是通过识别 dd > 12 时的其他情况,我可以最大限度地减少错误计算。

我试过了 -

SimpleDateFormat targetFormat = new SimpleDateFormat("EEE, yyyy-MMM-dd hh:mm:ss a");
SimpleDateFormat originalFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat originalFormat2 = new SimpleDateFormat("yyyy-dd-MM HH:mm:ss");

Calendar cal = Calendar.getInstance();

try {
     Date date = originalFormat1.parse(s);    //I tried with s = "2013-25-8 20:10:00";

     cal.setTime(date);

     if (cal.get(Calendar.DAY_OF_MONTH) > 12)
                date = originalFormat2.parse(s);

     System.out.println(targetFormat.format(date));
} catch (ParseException e) {
     System.out.println("Error");

输出

我期待的是:2013 年 8 月 25 日星期日 08:10:00 PM

但是我得到了:2015 年 1 月 8 日星期四 08:10:00 PM

最佳答案

你可以尝试:

originalFormat1.setLenient(false);

在尝试用它解析字符串之前;当月份数字超出范围时,这应该会引发 ParseException

关于java - 在 Java 中检查 MM-dd-yyyy 和 dd-MM-yyyy 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050033/

相关文章:

java - CDI 注入(inject)现有对象

java - 从字符串计算公式

java - 优点与缺点 - HibernateUtil 与 @Autowired SessionFactory

java - return语句后执行的代码

java - 使用 <context :annotation-config/> in ApplicationContext. xml 时自动连线注释不起作用

java - 如何在每个gradle构建期间运行SonarQube分析?

java - 使用 SQL Server 2008 数据库交付 Java 应用程序

java - Tomcat 负载均衡

java - 如何在@JsonFormat中使毫秒可选,以便与Jackson进行时间戳解析?

java - Spring @Service 注解具有更多值