- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个 9 月 2 日星期二的 GregorianCalendar 实例。 valñue 以毫秒为单位进行检查,没有问题。我想要下一个星期日(7 日)23:59:59 的另一个日历。所以:
GregorianCalendar currentCalendar = MyClock.INSTANCE.getCurrentCalendar();
GregorianCalendar nextSunday =
(GregorianCalendar)currentCalendar.clone();
// GregorianCalendar uses Sunday as first day of week, so we must
// advance one week
int currentWeek = nextSunday.get(GregorianCalendar.WEEK_OF_YEAR);
nextSunday.set(GregorianCalendar.WEEK_OF_YEAR,
currentWeek + this.THIS_WEEK);
nextSunday.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
nextSunday.set(GregorianCalendar.HOUR_OF_DAY, 23);
nextSunday.set(GregorianCalendar.MINUTE, 59);
nextSunday.set(GregorianCalendar.SECOND, 59);
nextSunday.set(GregorianCalendar.MILLISECOND, 0);
因此,由于星期日是 GregorianCalendar 一周中的第 1 天,而我在一年中的第 36 周,我添加一周,然后将这一天设置为星期日。
现在真正的问题来了:当我在我的开发机器上执行时,使用 OpenJDK 1.7.0_55,它运行完美。如果我用 OpenJDK 1.7.0_51 去我的测试机器,它会做错:
添加一周直到第 9 号星期二,然后转到第 14 号星期日而不是第 7 号星期日。
我不知道我这样做是对还是错:真正让我难受的是结果取决于机器,我在 GregorianCalendar 上没有发现这些 OpenJDK 版本有任何区别。对这种行为有什么解释吗?
PD:请坚持使用 GregorianCalendar。我知道这有点糟糕,但我不想在当前开发阶段使用 Joda 日历或任何其他日历。
编辑:我找到方法 setWeekDate(year, week_of_year, day_of_week)。人们会认为将年、周和星期几设置为相同的方法将授予它成功。它没有:仍然从第 2 位到第 14 位。这是什么猴子写的?
最佳答案
我对你的代码做了一些小改动:
SimpleDateFormat sdf = new SimpleDateFormat("dd MM yyyy - HH:mm:ss.SSSS Z");
GregorianCalendar currentCalendar = (GregorianCalendar) Calendar.getInstance();
currentCalendar.set(Calendar.DAY_OF_MONTH, 2);
System.out.println(sdf.format(currentCalendar.getTime()));
GregorianCalendar nextSunday = (GregorianCalendar) currentCalendar.clone();
// GregorianCalendar uses Sunday as first day of week, so we must
// advance one week
int currentWeek = nextSunday.get(GregorianCalendar.WEEK_OF_YEAR);
nextSunday.set(GregorianCalendar.WEEK_OF_YEAR, currentWeek + 1);
nextSunday.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.SUNDAY);
nextSunday.set(GregorianCalendar.HOUR_OF_DAY, 23);
nextSunday.set(GregorianCalendar.MINUTE, 59);
nextSunday.set(GregorianCalendar.SECOND, 59);
nextSunday.set(GregorianCalendar.MILLISECOND, 0);
System.out.println(sdf.format(nextSunday.getTime()));
这个输出:
02 12 2014 - 19:40:46.0250 +0200
07 12 2014 - 23:59:59.0000 +0200
这是正确的。不过,我有两点要指出:
关于java - 公历 : Jumping from tuesday to sunday,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27384222/
我正在做一项作业,涉及使用 GregorianCalendar。规范说我需要使用 setLenient(false);我该怎么做呢?我还需要设置一个固定日期(2009 年 1 月 1 日),以便我的计
嘿伙计们,我知道这是一个非常简单的问题,但我是 Java 新手,所以请耐心等待。我创建了一个程序,可以计算一本书发行后返回的时间!所以请帮帮我。 这是我的代码: public void loan(
我在夏令时方面遇到了一个奇怪的问题。我有一个 java 程序计划在每天上午 00:05 运行,但昨天它在 23:05 运行。我正在使用公历在java中安排这个程序。在此之前,它从未在 23:05 运行
我在 Java 中使用 GregorianCalendar,我想知道如何使用它来检查日期是否有效(例如:检查 2 月 29 日是否仅在闰年, 检查日期是否不早于当前数据等)。 我已经创建了一个 Gre
我一直在试图弄清楚这个问题。这是关于JavaFX控件在按下回车键时选择月份、数字日和年的名称。我什至尝试使用面向对象来解决这个问题。问题在图片链接中。 Here is the question in
这个问题已经有答案了: Why is January month 0 in Java Calendar? (18 个回答) 已关闭 8 年前。 对于此代码,我必须做的就是使用 GregorianCal
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎偏离主题,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或 include a mini
我创建了一个 TreeMap的 存储引入 GPS 闰秒的日期: leapSecondsDict = new TreeMap(); GregorianCalendar calendar = ne
在完成 JUnit 之后,我正在做一些基于文档的测试,在表格中包含以下项目 输入变量 - 预期结果 - 实际结果......通过或失败...... 如果我将日期和时间传递给我的方法 “01AUG07”
这个问题已经有答案了: 已关闭11 年前。 Possible Duplicate: Java Calendar Setting Incorrectly 我有这个代码: GregorianCalenda
我必须为我的 Java 类(class)制作一个功能齐全的日历,但我被卡住了。我正在使用 GregorianCalendar 来获取当前的日、月、年等。我正在使用 JButton 来填充填写日历的 4
我正在使用公历来设置日期值并尝试获取设置的值。代码如下 Constants.sSetDate_calendar = new GregorianCalendar(year,month,day);//
我有一个 9 月 2 日星期二的 GregorianCalendar 实例。 valñue 以毫秒为单位进行检查,没有问题。我想要下一个星期日(7 日)23:59:59 的另一个日历。所以: Greg
我有一个 JSP 页面,里面有一个 java 变量,其名称为 ${entry.date},该变量的类型为 Gregorian Calendar ,它放置在循环并最终生成错误日志表。现在我的问题是,在我
下面的程序是教程的一部分。我在这里有一些困惑包含以下几行: GregorianCalendar gCal = new GregorianCalendar();
我正在编写一个类来简化我可以使用 GregorianCalendar 进行的所有操作。我需要做的操作是:- 获取字符串格式的日期,翻译成意大利语;- 在两个日期之间进行减法。我没有使用过日历、日期和时
我是一个非常业余的编码员,他似乎无法解决从用户输入的整数中获取星期几(例如星期日、星期一等)的问题。我只是想给用户一条消息,其中列出了 (mm/dd/yyyy, dayOfWeek),但我没有改变星期
一些历法改革者寻求使一年中每个月的长度相等。这通常是通过创建一个日历来实现的,该日历有 13 个月,每个月有 4 周(28 天),共 364 天。已知最早的此类建议是格鲁吉亚日历 - more det
相同的代码 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:
我正在尝试将 pandas 数据帧转换为 SPSS 格式,但在转换 datetime64 变量时遇到问题。 使用以下代码: import pandas as pd import datetime as
我是一名优秀的程序员,十分优秀!