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

Android 时区更改后的日历错误时间,android,calendar,timezone,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

我需要从当前获取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-28620:00:00+01:00

如果我从内存中删除应用程序,并在更改时区后再次启动它,则一切正常。

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

DateTime now = DateTime.now();
DateTime fiveMonthsAgo= now.minusMonths(5);
否则,您必须在必要时手动减去年份