Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Calendar.set(..)在android 6.0上不工作_Java_Android_Android 6.0 Marshmallow - Fatal编程技术网

Java Calendar.set(..)在android 6.0上不工作

Java Calendar.set(..)在android 6.0上不工作,java,android,android-6.0-marshmallow,Java,Android,Android 6.0 Marshmallow,我需要把日程安排在下周的星期一。我的代码在安卓9.0上运行,但在安卓6.0上,它只在调试时运行 问题在于Calendar.set(..)函数,它们就是不起作用。例如,calendar.set(calendar.WEEK\u OF_YEAR,17)不会将日历周更改为17,但在调试时会将其更改为17 这是我的密码: Calendar mcurrentTime = Calendar.getInstance(Locale.GERMANY); if(AppHelper.get

我需要把日程安排在下周的星期一。我的代码在安卓9.0上运行,但在安卓6.0上,它只在调试时运行

问题在于Calendar.set(..)函数,它们就是不起作用。例如,calendar.set(calendar.WEEK\u 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个

要在7.0之前的版本中进行时间计算,很遗憾,您必须使用JavaTime软件包或其后端口

实现ThreeTen Android后端口库:

implementation 'com.jakewharton.threetenabp:threetenabp:1.2.0'

然后在onCreate方法中初始化它。

AndroidThreeTen.init(this)
确保包含这些库,而不是Java 8库。

import org.threeten.bp.LocalDate
import org.threeten.bp.temporal.ChronoUnit
import org.threeten.bp.temporal.WeekFields
import com.jakewharton.threetenabp.AndroidThreeTen
完成工作的代码

var mCurrentTime = LocalDate.now()
val weekFields = WeekFields.of(Locale.GERMANY)

val currentDayOfWeek = mCurrentTime.get(weekFields.dayOfWeek())
//subtract day of week to monday
mCurrentTime=mCurrentTime.minus((currentDayOfWeek.toLong()-1),ChronoUnit.DAYS)
//add week starting from monday
mCurrentTime=mCurrentTime.plus(1,ChronoUnit.WEEKS)
//get weekOfYear
val weekOfCurrentTime=mCurrentTime.get(weekFields.weekOfYear())
show_week_in_year.text=weekOfCurrentTime.toString()

为科特林感到抱歉。Java正在休假。

听起来像是不同的默认周计划。你总是提前一周到达吗?
Calendar
类设计拙劣,过时已久。使用java.time(现代java日期和时间API)可以获得更简单、更自然、更易于预测的代码或行为。