Java simpledateformat月返回零

use*_*977 0 java simpledateformat java-date

这可能是重复的,但我无法弄清为什么当将MMM指定为MMM并与mm(数字)一起使用时,该月返回零。这里的任何帮助将不胜感激?

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import java.util.Locale;

 public class time1 {

 public static void main(String[] args) {

    DateFormat originalFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");
    Date date = null;
    try {
            date = originalFormat.parse("26-Aug-2011");
    } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
    String formattedDate = targetFormat.format(date);
    System.out.println("old date: " + date);
    System.out.println("new date: " + formattedDate);
 }
}
Run Code Online (Sandbox Code Playgroud)

输出为:

旧日期:IST 2011年8月26日星期五00:00:00
新日期:2011 -00- 26年

当格式更改为dd-mm-yyyy且日期为26-08-2011时,输出为

旧日期:IST 2011年1月26日星期三00:07:00
新日期:2011-07-26

我无法理解MMM失败的原因,我所有的日期都采用格式(2011年8月26日),我需要将其转换为yyyy-mm-dd(26-07-2011)。

Kau*_*pur 7

文档中,我可以说

DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");
Run Code Online (Sandbox Code Playgroud)

需要更改为

DateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd");
// this gives you the Date in Digits.
Run Code Online (Sandbox Code Playgroud)

根据文档,

“ M”用于年份中的月份,而
“ m”用于小时中的分钟。

因此,您的“ mm”返回的分钟数默认为00:00,这就是您获得的输出。这将为您提供以下输出。

old date: Fri Aug 26 00:00:00 IST 2011
new date: 2011-08-26
Run Code Online (Sandbox Code Playgroud)