我有这个日期: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();
}
我希望输出为
23 Feb 4:28 PM
但我输出为
23 Feb 04:28 am
这里有什么问题?
答案 0 :(得分:6)
在第二个H
对象中使用一个DateFormat
:
formatter = new SimpleDateFormat("dd MMM h:mm a");
您还需要第一个格式化程序的AM / PM标记:
Format formatter = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");
请参阅Javadocs:
中的此说明数字:对于格式设置,模式字母数是最小位数,较短的数字是零填充到此数量。对于解析,除非需要分隔两个相邻的字段,否则将忽略模式字母的数量。
答案 1 :(得分:1)
How about this:
Date date1 = new Date("2/23/2016 4:28:46 PM");
SimpleDateFormat sdf = new SimpleDateFormat("dd MMM hh:mm:ss a");
String formattedDate = sdf.format(date1);
System.out.println("Formatted Date: "+formattedDate);