android.text.format.DateFormat “HH” 不像 java.text.SimpleDateFormat 那样被识别
当我在 中使用 “HH” 标志时,它被解释为字面的“HH”。但是当我使用它时,它被解释为2位数字的小时。为什么它们不同?android.text.format.DateFormatjava.text.SimpleDateFormat
我不是在寻找一个可行的替代方案(我已经知道我必须使用而不是)。我只是好奇为什么“HH”不被识别。kkHH
Java 示例:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Calendar calendar = Calendar.getInstance();
    String dateJava = new java.text.SimpleDateFormat(
        "dd-MM-yyyy HH:mm:ss").format(calendar.getTime());
    String dateAndroid = android.text.format.DateFormat.format(
        "dd-MM-yyyy HH:mm:ss", calendar).toString();
    TextView tvAndroid = (TextView) findViewById(R.id.tvAndroid);
    TextView tvJava = (TextView) findViewById(R.id.tvJava);
    tvAndroid.setText("Android: " + dateAndroid);  //prints 26-05-2013 HH:36:34
    tvJava.setText("Java: " + dateJava);           //prints 26-05-2013 22:36:34
}
输出为:
Android: 26-05-2013 HH:36:34 
Java:    26-05-2013 22:36:34
我希望两者都是26-05-2013 22:36:34
Android的DateFormat有错误吗?
Java的SimpleDateFormat接受这些:
H   Hour in day (0-23)      Number  0
k   Hour in day (1-24)      Number  24
K   Hour in am/pm (0-11)    Number  0
h   Hour in am/pm (1-12)    Number  12
因此,Android开发人员似乎决定更改其含义,并且在他们的DateFormat函数中,它等同于SimpleDateFormat,正如他们在文档页面中明确指出的那样:kH
This constant was deprecated in API level 18. Use a literal 'H' (for 
compatibility with SimpleDateFormat and Unicode) or 'k' (for compatibility 
with Android releases up to and including Jelly Bean MR-1) instead. Note 
that the two are incompatible. 
这是什么原因?