android设置系统时间错误

android设置系统时间错误,android,time,Android,Time,我曾经 Calendar c=Calendar.getInstance(); c、 设置(年、月-1、日、小时、日、分钟); 布尔b=SystemClock.setCurrentTimeMillis(c.getTimeInMillis()) 要设置系统时间,它可以工作,但不能设置超过时间inmillis的Integer.MAX_值 例如:2016-03-09 12:34:00(成功);2150-03-09-12:34:00(失败) 在android源代码中,Settings-DateTimeSe

我曾经

Calendar c=Calendar.getInstance();
c、 设置(年、月-1、日、小时、日、分钟);
布尔b=SystemClock.setCurrentTimeMillis(c.getTimeInMillis())

要设置系统时间,它可以工作,但不能设置超过时间inmillis的Integer.MAX_值

例如:2016-03-09 12:34:00(成功);2150-03-09-12:34:00(失败)

在android源代码中,Settings-DateTimeSettings用于getSystemService(Context.ALARM_SERVICE)).setTime,我也尝试使用它来设置时间,但有相同的错误

static void setDate(Context context, int year, int month, int day) {
    Calendar c = Calendar.getInstance();

    c.set(Calendar.YEAR, year);
    c.set(Calendar.MONTH, month);
    c.set(Calendar.DAY_OF_MONTH, day);
    long when = c.getTimeInMillis();

    if (when / 1000 < Integer.MAX_VALUE) {
        ((AlarmManager) context.getSystemService(Context.ALARM_SERVICE)).setTime(when);
    }
}
static void setDate(上下文上下文、整数年、整数月、整数天){
Calendar c=Calendar.getInstance();
c、 设置(日历年、年份);
c、 设置(日历、月份、月份);
c、 设置(日历日/月/日/日);
long when=c.getTimeInMillis();
if(当/1000<整数最大值时){
((AlarmManager)context.getSystemService(context.ALARM_SERVICE)).setTime(何时);
}
}
日志:

I/wpa请求者(461):[CTRL\u IFACE]wlan0:SIGNAL\u POLL
D/SystemClock(4186):将一天的时间设置为秒=1533218663
W/SystemClock(2005):时间倒流:上一次18844436732473938(ioctl)与现在-526088270617409983(ioctl),tid=2005
I/PushLogSC2559(1190):[ReceiverDispatcher-91]读到发送:DA(活动/null:-1)
D/dalvikvm(1253):释放373K的所有GC_,释放3353K/4176K的20%,暂停20ms,总计21ms
V/警报时钟(4152):无下一个警报
V/AlarmClock(4152):AlarmInitReceiver已完成

谁能帮我,谢谢

谷歌的报告是“这是否可行将取决于你的具体硬件。实时时钟(RTC)芯片在其支持的日期范围上有上下限,而蹩脚的芯片通常不会超过100年(因为他们假设你只会将时钟设置为实际时间,并且在设备制造之前或在其过时很久之后不会使用该设备)。但这主要是未来博物馆馆长面临的问题。”

你可以看到

谷歌的报告是“这是否有效将取决于你的特定硬件。实时时钟(RTC)芯片在其支持的日期范围上有上下限,而蹩脚的芯片通常不会超过100年(因为他们假设你只会将时钟设置为实际时间,并且在设备制造之前或在其过时很久之后不会使用该设备)。但这主要是未来博物馆馆长面临的问题。”


你可以看到你为什么要检查(当/1000