我有一个SQL数据库,其中有一个year和week字段,我需要获取月份数据。当我尝试检索它时,它会给我下一个月,即当周在月底时。例如,从2019.01.28-2019.02.01周,我得到月份数字2。
有什么问题吗?
(附加信息:我也尝试过其他day_of_week )
代码如下:
rs = stmt.executeQuery("SELECT * FROM " + sqlDatabase.beosztas() + " WHERE id = \'" + id + "\'");`
ResultSetMetaData md = rs.getMetaData();
while (rs.next()) {
year = rs.getInt(2);
week = rs.getInt(3);
cal.set(Calendar.YEAR, year);
cal.set(Calendar.WEEK_OF_YEAR, week);
cal.set(Calendar.DAY_OF_WEEK, 1);
if (count == 0) {
month = cal.get(Calendar.MONTH) + 1;
}
count++;
}
发布于 2018-06-07 03:51:56
Calendar.DAY_OF_WEEK从周日开始,而不是周一。所以在你的例子中,它返回周日的月份是很正常的。如果您想将日期设置为星期一,只需使用:
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
在使用日历时,您应该小心。Calendar.MONTH是从0开始的索引,Calendar.DAY_OF_WEEK是从1开始的索引。
因此,您应该使用Calendar中定义的常量,如Calendar.MONDAY或Calendar.JUNE,以确保使用正确的月份或日期,而不会出错。
为了友好地使用Calendar,常量是更好的。想要定义一个2018-02-18的日期:
Calendar cal = Calendar.getInstance();
cal.set(2018, 2, 18); // wrong. here the date will be 2018-03-18
cal.set(2018, Calendar.FEBRUARY, 18); // correct
https://stackoverflow.com/questions/50728357
复制相似问题