java中的日期转换?

WIS*_*SHY 0 java date simpledateformat

我有这个日期:2016年2月23日下午4:28:46

String d="2/23/2016 4:28:46 PM";
Format formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
try {
    Date date = ((DateFormat) formatter).parse(d);
    formatter = new SimpleDateFormat("dd MMM HH:mm a");
    String notDate = formatter.format(date);
    holder.tvNotificationTime.setText(notDate);
    System.out.println(notDate);
} catch (ParseException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

我希望输出为

23 Feb 4:28 PM
Run Code Online (Sandbox Code Playgroud)

但我输出为

23 Feb 04:28 am
Run Code Online (Sandbox Code Playgroud)

这有什么不对?

man*_*uti 6

H在第二个DateFormat对象中使用一个:

formatter = new SimpleDateFormat("dd MMM h:mm a");
Run Code Online (Sandbox Code Playgroud)

您还需要第一个格式化程序的AM/PM标记:

Format formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
Run Code Online (Sandbox Code Playgroud)

请参阅Javadocs的这篇说明:

数字:对于格式化,模式字母的数量是最小位数,较短的数字是零填充到此数量.对于解析,除非需要分隔两个相邻字段,否则将忽略模式字母的数量.