san*_*ana 4 java math android alarmmanager
我正在开发一个Android应用程序,用于每天,每周,每月设置警报.通过将给定日期和时间转换为毫秒,前两个工作正常.但是,当我试图每月做同样的事情时,它不起作用.日期格式完全不同.
我的设置如下,
Alarmtimefor30具有给定的日期(以毫秒为单位).
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30*1440*60000 , pi);
Run Code Online (Sandbox Code Playgroud)
我将intervalMillis设为30*1440*60000,结果为2592000000,即30天(毫秒).当我尝试打印30*1440*60000时,结果为1702967296.我不确定可能是什么问题.
是否有另一种方法来设置月度警报(每月特定日期和时间触发)?
请帮忙!谢谢!
默认情况下,Java中的整数文字将是类型int,这是一个32位数字.当你乘的int由int该结果也是int,所以你的结果被截断.显然,参数setRepeating是a long,但这并不意味着编译器会为你解决这个问题 - 你的乘法仍然会被截断.
解决方案是明确强制文字为类型long,这是一个64位数字:
am.setRepeating(AlarmManager.RTC_WAKEUP, alarmTimefor30, 30L*1440L*60000L , pi);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
672 次 |
| 最近记录: |