java - 日期不正确

标签 java

我想显示带有名称的月份。所以我使用 JODA.jar

这是我的代码:

   public static void main(String[] args) {
    String date1 = "2013-21-01 14:00:00";
    String date2 = "2013-01-01 14:00:00";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
    Date date11, date22;
    try {
        date11 = sdf.parse(date1);
        System.out.println("Date : " +date11);
        date22 = sdf.parse(date2);
        System.out.println("Date : " +date22);

    DateTime dt1 = new DateTime(date11);
    String monthName1 = dt1.monthOfYear().getAsText(Locale.ENGLISH); 
    DateTime dt2 = new DateTime(date22);
    String monthName2 = dt2.monthOfYear().getAsText(Locale.ENGLISH); 

    System.out.println("String1 : " +monthName1+" "+dt1.getYear());
    System.out.println("String2 : " +monthName2+" "+dt2.getYear());
    }
    catch (ParseException e) {
        e.printStackTrace();
    }                   
    }

在第一个日期中,我输入了 21 个月,这是不可能的。但我在控制台中有这个:

  Date : Mon Sep 01 14:00:00 GMT+01:00 2014
  Date : Tue Jan 01 14:00:00 GMT+01:00 2013
  String1 : September 2014
  String2 : January 2013

怎么会这样?通常它不应该显示第一个日期,而只显示正确的日期,对吗?

最佳答案

目前正在滚动到下一年。

21 - 12 = 9 = September

为了不翻车,就让它non-lenient

sdf.setLenient(false);

关于java - 日期不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661717/

相关文章:

java - 关于 java.sql.resultset 的问题

java - 耦合度太高还是可以这样设计?

java - Gradle 构建失败,找不到符号 "org.jcp.xml.dsig.internal.dom.XMLDSigRI"

当我将 <listener-class> 包含到 web.xml 中时,出现 java.lang.NoClassDefFoundError

java - 如何创建实例

java - 输入 "exit"后获取 java.util.InputMismatch

java - apache poi jar 缺少类文件

java - 一起使用 String 和 int 时的 System.out.println 行为

java - 如何向右旋转数组

java - 在单线程系统中,ArrayList,Collections.getSynchronizedList()和CopyOnWriteArrayList有什么区别?