当我创建LocalDateTime
的新实例并尝试获取当前小时时,它正好关闭了4个小时。
例如我的代码如下:
LocalDateTime mReminderTime = new LocalDateTime();
int mHourOfDay = mReminderTime.getHourOfDay();
手机/平板电脑的系统时间为19:00,mHourOfDay
为23:00。我一直在物理设备上测试这些。
我也尝试了以下代码并得到了相同的结果:
LocalDateTime mReminderTime = LocalDateTime.now();
int mHourOfDay = mReminderTime.getHourOfDay();
我的时区是EST,即GMT的-4:00。我相信这正是问题所在。 LocalDateTime在格林威治标准时间0:00实例化,导致mHourOfDay
比系统时间提前4小时。
我的问题:如何通过检测设备的当前时区让LocalDateTime
在EST初始化?如果用户更改时区,我不想将LocalDateTime设置为专门使用-4:00 GMT。现在我有一个使用Calendar
的解决方案,如下所示:
Calendar cal = Calendar.getInstance();
mReminderTime = new LocalDateTime(cal);
我希望完全依赖Joda-Time,因此我想要一个避免Calendar
的解决方案。如果有帮助,我使用这个库将Joda-Time导入我的项目:https://github.com/dlew/joda-time-android