在SimpleDateFormat中使用a和aaa有什么区别?



我想将当前日期显示为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 aHH: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);

相关内容

  • 没有找到相关文章

最新更新