Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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 日历设置年份的第周(don');我不能正常工作_Java_Android_Calendar - Fatal编程技术网

Java 日历设置年份的第周(don');我不能正常工作

Java 日历设置年份的第周(don');我不能正常工作,java,android,calendar,Java,Android,Calendar,我构建了一个函数来返回日期(作为字符串),提供周数和日期 我的功能在我的设备上运行得很好(Legeneos android 7.1.2下的三星Galaxy S6),但我的一个朋友使用另一台android设备(android 5.1.x,这就是我所知道的),向我报告了一个错误:该功能返回了他当前一周的日期(调用该功能的实时周)不管他给了多少周 为了不打扰我的朋友,我使用的模拟器也有同样的问题。它是Android studio(Emulator Nexus_5_API_23 Android 6.0)

我构建了一个函数来返回日期(作为字符串),提供周数和日期

我的功能在我的设备上运行得很好(Legeneos android 7.1.2下的三星Galaxy S6),但我的一个朋友使用另一台android设备(android 5.1.x,这就是我所知道的),向我报告了一个错误:该功能返回了他当前一周的日期(调用该功能的实时周)不管他给了多少周

为了不打扰我的朋友,我使用的模拟器也有同样的问题。它是Android studio(Emulator Nexus_5_API_23 Android 6.0)中的默认版本

以下是我的功能:

public static String getDayString(int weekNumber, int dayPosition) {
    DateFormat sdf = DateFormat.getDateInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
    cal.set(Calendar.DAY_OF_WEEK, dayPosition + 2);
    return sdf.format(cal.getTime());
}
public static String getDayString(int weekNumber, int dayPosition) {
    DateFormat sdf = DateFormat.getDateInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
    cal.get(Calendar.WEEK_OF_YEAR);
    cal.set(Calendar.DAY_OF_WEEK, dayPosition + 2);
    return sdf.format(cal.getTime());
}
在我第一次尝试理解这个问题时,我发现cal.set(Calendar.WEEK,OF,YEAR,weekNumber);没有用

然后我放入Log.d(“ClassName”,String.valueOf(cal.get(Calendar.WEEK/OF/u YEAR));查看周数是否已从当前周数(由getInstance()设置)正确更改为所需周数(周数)。但是问题消失了,函数工作得很好

结果是,当我把cal.get(日历,一年中的一周)放进去时;在cal.set(日历周/年/周/周数)之后;周数已更新,但仅校准集(…)不起作用。

以下是我的“固定”功能:

public static String getDayString(int weekNumber, int dayPosition) {
    DateFormat sdf = DateFormat.getDateInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
    cal.set(Calendar.DAY_OF_WEEK, dayPosition + 2);
    return sdf.format(cal.getTime());
}
public static String getDayString(int weekNumber, int dayPosition) {
    DateFormat sdf = DateFormat.getDateInstance();
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.WEEK_OF_YEAR, weekNumber);
    cal.get(Calendar.WEEK_OF_YEAR);
    cal.set(Calendar.DAY_OF_WEEK, dayPosition + 2);
    return sdf.format(cal.getTime());
}
我对这个结果感到非常惊讶和困惑。cal.get(…)如何改变任何事情?我怎样才能找到另一种方法来解决这个“问题”?cal.set(…)方法有什么问题?我是做错了什么还是错过了什么

这个奇怪的“量子观察者效应”问题在Java中一般不存在。但仅限于部分(并非所有)android设备。