java.util.Date is generating a wrong date?

前端 未结 3 1515
时光取名叫无心
时光取名叫无心 2020-12-06 23:47

Here\'s my code:

java.util.Date TODAY = new java.util.Date();     
SimpleDateFormat SDF = new SimpleDateFormat( \"YYYY-MM-DD\" );
System.out.println ( SDF.fo         


        
相关标签:
3条回答
  • 2020-12-07 00:35

    What may be the reason behind this Wrong Output ?

    Your assumptions about the date format string are wrong, the output is correct.

    y   Year
    Y   Week year
    D   Day in year
    d   Day in month
    M   Month in year
    m   Minute in hour
    

    http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

    Y Week year will usually give incorrect results around new year. D will give incorrect results from February. So your format appeared fine most of last month.

    0 讨论(0)
  • 2020-12-07 00:45

    You want to use the yyyy year and dd day of the month.

    However, I suggest you migrate to JSR-310 which is built into Java 8 and available for earlier versions of Java. The same code is

    System.out.println(LocalDate.now());
    

    prints

    2105-02-02
    
    0 讨论(0)
  • 2020-12-07 00:45

    When format for SimpleDateFormat is specified as follows:

    SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD");
    
    • the YYYY - means week year,
    • the MM - means month,
    • the DD - means day in year.

    Week year here is not what you wanted. See what is week year.

    Your today's date is 2015-02-02, which means that it is 32 days since the beginning of the year 2015 passed and your are on the 33 day. That is why you get date "2015-02-33".

    To mean year (and not week year) and day in month change format to SimpleDateFormat("yyyy-MM-dd");

    0 讨论(0)
提交回复
热议问题