【问题标题】:SimpleDateFormat. format returning wrong date简单日期格式。返回错误日期的格式
【发布时间】:2019-08-19 02:03:59
【问题描述】:

我有这段代码我想知道为什么它返回正确的日期

Festival f= (Festival) festival.get(0);
Date d=f.getSDate();


System.out.println(d.getYear());
System.out.println(d.getMonth());
System.out.println(d.getDate());


SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy"); // define your format.
String formattedDate = df.format(d);
System.out.println("New Date To Show::"+formattedDate);

输出是这样的

2019
2
27
New Date To Show::27/03/3919

【问题讨论】:

  • 因为月份(d.getMonth())从零开始,2实际上是3
  • cannot reproduce your problem。请发布一个可重现的问题。
  • 月份是0,基于Date类,年份是1900。您似乎创建的日期不正确。
  • 如前所述:月份是基于 0 的,因此您的两个输出都是正确的。但是您使用的类已被弃用,因此您应该改用新的替代品:docs.oracle.com/javase/8/docs/api/java/util/…
  • 不仅Date 类早已过时,getXx 方法也已正式弃用。不要使用Date,即使你这样做了,当然避免使用过时的方法。此外,您似乎从f.getSDate() 得到了错误年份的一天。我建议你使用 java.time 中的 LocalDateDateTimeFormatter,忘记 DateSimpleDateFormat。我保证,它会消除所有的困惑。

标签: java date format simpledateformat


【解决方案1】:

尝试使用这个:

   Date date=new Date(); 
   // you can assign your return from the function here



    LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    System.out.println(localDate.getMonthValue());
    System.out.println(localDate.getDayOfMonth());
    System.out.println(localDate.getYear());


    SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
    String formattedDate = df.format(date);
    System.out.println("New Date To Show::"+formattedDate);

【讨论】:

  • 更多详情请访问:stackoverflow.com/questions/7182996/…
  • 一方面它不能解决f.getSDate()返回3919年日期的问题。另一方面,我们没有任何信息可以帮助我们帮助提问者解决上述问题问题(除非将方法的返回类型更改为LocalDate)。我还会采取步骤并使用DateTimeFormatter 格式化LocalDate
  • f.getSDate() 返回一个 Date 类型的对象(根据问题显示)。您可以在我共享的代码上替换相同的代码并继续进行所需的操作。
  • 它仍然返回 3919 年并更改月份值。 :(
  • 必须更改月份值(否则会出错)。三月是 Date 中的 2 和 LocalDate 中的 3,因此它从 2 更改为 3。您的问题是您从 f.getSDate() 得到错误的 Date。 @艾哈迈德
【解决方案2】:

这是因为月份 (d.getMonth()) 从零开始,而 2 实际上是 3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多