更改时区后的日历错误时间

时间:2018-08-10 14:00:15

标签: android calendar timezone

我需要从当前日期开始到5个月前的某个月的第一天,我使用此代码来做到这一点:

val date = Calendar.getInstance()
date.add(Calendar.MONTH, -5)
date.set(Calendar.DAY_OF_MONTH, 1)
date.set(Calendar.HOUR_OF_DAY, 0)
date.set(Calendar.MINUTE, 0)
date.set(Calendar.SECOND, 0)

通常正常,可以从2018-08-10T15:46:53+02:00到需要的2018-03-01T00:00:00+01:00

但是,如果我将时区更改为GMT + 7,请恢复应用程序并运行此代码,它会在需要几天前给我一个奇怪的结果:2018-02-28T20:00:00+01:00

如果我从内存中删除应用,然后在更改时区后重新启动,一切正常。

1 个答案:

答案 0 :(得分:1)

使用库JodaTime,您的代码将如下所示:

DateTime now = DateTime.now();
DateTime fiveMonthsAgo= now.minusMonths(5);

否则,您必须在必要时手动减去年份。

相关问题