Android DateUtils.format 与俄罗斯的 Calendar.get 字段不一致

Android DateUtils.format inconsistant with Calendar.get field in Russia

安卓 4.4.2

Calendar.get(Calendar.HOUR_OF_DAY) return 俄罗斯的错误值。

我创建了一个显示问题的小测试。如果我将我的 phone 更改为莫斯科时区,它不会被复制,但对于莫斯科的用户它会。

我正在使用以下代码来格式化日期:

DateUtils.formatDateTime(this, calendar.getTimeInMillis(), DateUtils.FORMAT_SHOW_TIME | DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_YEAR);

以及获取日历字段值的以下代码:

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int min = calendar.get(Calendar.MINUTE);

我做的测试的问题是: - 使用 DateUtils.format 时的小时数为 11 - 使用 calendar.get(Calendar.HOUR_OF_DAY) 的小时数为 12

我在这里发布我的解决方案以防其他人遇到这个问题:

我发现问题出在 DateUtils,它没有正确格式化时间(即使我明确传递了 TimeZone)。

我将 DateUtils 的使用转换为 SimpleDateFormat 并解决了问题。

我需要做一些操作以获得我需要的 date\time 格式,但最终结果与使用 DateUtils 相同。