与 java.util.Calendar 混淆

Getting confused with java.util.Calendar

我想获取格式为 dd-MM-yyyy 的 SMS 日期和格式为 HH:MM 的时间(24 小时格式),在 phone 上收到。我使用下面的代码

Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(messages[0].getTimestampMillis());
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss.SSS");
String finalDateString = formatter.format(calendar.getTime());
Log.i(TAG, "Date new Format " + finalDateString);

消息于 2019 年 12 月 26 日 11:50PM 在 phone 收到,但我在日志 "Date new Format 27/12/2019 10:50:03.000" 中得到结果。请注意,它给出的不是 26,而是 27,时间也少了 1 小时,而不是 11,而是 10。 这是正常行为吗?我是否必须从日期中减去 1 天才能获得正确的数据并及时添加 1 小时?这会始终正常工作吗?我必须指定时区才能获得正确的数据吗?请指教,因为我对此感到困惑。

尝试如下

formatter.timeZone = TimeZone.getTimeZone("UTC")