【发布时间】:2016-08-23 08:30:28
【问题描述】:
我想检查日期是否是周末(比如说 2016 年 8 月 28 日),但由于某些奇怪的原因,它返回了错误的日期 代码如下
SimpleDateFormat format = new SimpleDateFormat("yyy,mm,dd");
depDate = format.parse(departure_date);
Calendar calDeparture = Calendar.getInstance();
calDeparture.setTime(depDate);
if (calDeparture.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY && calArrival.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
Log.d("true", "WEEKEND");
}else {
Log.d("FALSE", "NOT WEEKEND");
}
当我做 Log.d("DAY OF WEEk:", Integer.toString(calDeparture.get(Calendar.DAY_OF_WEEK))); 8 月 28 日返回 4
【问题讨论】:
-
"mm" 表示分钟,而不是几个月...如果您查看解析的结果,您会看到发生了什么。在日期格式中使用逗号也很奇怪。
-
我得到了同样的结果。没有什么变化。 8 月 28 日打印出一周的第 4 天
-
在这种情况下,您需要提供一个 minimal reproducible example 来显示问题。
-
@JonSkeet 我设法让它工作。问题是这行代码:departmentDateTrue = Integer.toString(year)+","+Integer.toString(month)+","+Integer.toString(day);我把它改成了出发日期True = Integer.toString(year)+","+Integer.toString(month+1)+","+Integer.toString(day);
-
当问题出在不在问题中的代码中时,我们真的很难为您提供帮助。请从这个经验中学习:minimal reproducible example 的问题比这样不完整的问题要好得多。另请注意,您最好不 像开始那样格式化日期,而是填充
Calendar(或者更好的是Java 8 时间值)并对其进行格式化。实际上,当日数或月数小于 10 时,您的值将与指定格式不匹配...