我有一个包含多个日期的字符串:
[2012年7月20日5:11:36,670 UTC时间,2012年7月20日5:11:36,683 UTC PM]
ParsePosition parsePos = new ParsePosition(1);
SimpleDateFormat format2 = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss,SSS z a");
System.out.println(format2.parse(entry.getValue().toString(), parsePos)) ;
输出:Fri Jul 20 06:11:36 BST 2012
我需要输出为20-Jul-2012 5:11:36,670 UTC PM
。
我是否需要在SimpleDateFormat
中设置LOCALE以使其输出不同?
答案 0 :(得分:2)
您需要设置时区,但更重要的是,您只需要使用格式来格式化日期:
Date date = format2.parse(...);
String formattedDate = format2.format(date);
System.out.println(formattedDate);
您的代码的作用是:
Date date = format2.parse(...);
System.out.println(date.toString());
我真的不明白将字符串解析为日期,然后使用完全相同的格式显示日期(除了验证String确实是一个有效的日期,但是你可以简单地重用原始字符串)。
答案 1 :(得分:1)
你有两个小问题:
hh
,而不是HH
。 H
是“一天中的小时(0-23),因此无法正常使用AM / PM标记a
。您的两个示例日期字符串将解析为AM,而不是PM。format2.format(format2.parse(entry.getValue().toString())
。这是一个完整的例子:
SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss,SSS z a");
String input = "20-Jul-2012 5:11:36,670 UTC PM";
Date date = format.parse(input);
String output = format.format(date);
System.out.println(output);
结果:
20-Jul-2012 05:11:36,670 UTC PM