【发布时间】:2019-04-20 10:31:33
【问题描述】:
我需要将日历设置为下周的星期一。我的代码在 Android 9.0 上运行,但在 Android 6.0 上只能在调试时运行。
问题在于 Calendar.set(..) 函数,它们只是不起作用。例如 calendar.set(Calendar.WEEK_OF_YEAR, 17) 不会将日历周更改为 17,但在调试时会将其更改为 17。
这是我的代码:
Calendar mcurrentTime = Calendar.getInstance(Locale.GERMANY);
if(AppHelper.getInstance().getNextWeek() != 0){
mcurrentTime.set(Calendar.WEEK_OF_YEAR,
AppHelper.getInstance().getNextWeek());
mcurrentTime.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
}
weekNumberTv.setText(mcurrentTime.get(Calendar.WEEK_OF_YEAR)+"");
Android 9.0 weekNumberTv 显示 17
Android 6.0 weekNumberTv 显示 16
如果启动调试模式
Android 6.0 weekNumberTv 显示 17
【问题讨论】:
-
听起来像是不同的默认周计划。你总是提前1周吗?
Calendar类设计不佳且早已过时。使用现代 Java 日期和时间 API java.time,以获得更简单、更自然的代码或更容易预测的行为。
标签: java android android-6.0-marshmallow