我想将当前日期显示为00:50:32 A
我的代码
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss a");
String time = sdf.format(date);
System.out.println("time : " + time);
但是它打印为:
time : 00:50:32 AM
我尝试了HH:mm:ss a
和HH:mm:ss aaa
,但结果是相同的。
不行!如果模式小于等于4个字母,则使用短格式。所以'a', 'aa', 'aaa'和'aaaa'是相同的。
你所能做的就是不带'a'格式化,然后手动添加'a'或' p '。
话虽如此,使用'HH'(24小时制)为什么需要AM/PM?
我相信对于am/pm标记,"短"one_answers"长"没有区别。
特别是,DateFormatSymbols.getAmPmStrings()
只返回两个字符串-并且没有getShortAmPmStrings()
调用或类似的东西。
引用SimpleDateFormat的Javadoc:
用于格式化,如果图案字母是4个以上,全称使用形式;否则一个简短的或如果可以,使用缩写形式
:(a)如果您希望看到差异,请使用aaaa
(4 × a
)而不是aaa
(4 × a
)。(b)如果AM/PM没有短格式(或长格式),那么对于a
说明符,重复的次数无关紧要。
为了更彻底一点,我运行了下面的程序。它没有发现任何影响格式的情况。
Date date = new Date();
int n = 0;
for (String country : Locale.getISOCountries()) {
for (String language : Locale.getISOLanguages()) {
Locale loc = new Locale(language, country);
String as = "";
String prev = null;
for (int i = 0; i < 20; ++i) {
++n;
as += "a";
String current = new SimpleDateFormat(as, loc).format(date);
if (prev != null && !prev.equals(current)) {
System.out.println("Locale: " + loc + ", as=" + as + ", current="
+ prev + ", next=" + current);
}
prev = current;
}
}
}
System.out.println("Tried out " + n + " combinations.");
没有区别,你以为会有什么不同?
基于此网站(http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/):
)"a"→"我"
" aa "→"我"
那么你的选项是
time = time.substring(0,time.length()-1);