【问题标题】:java calendar wrong day [duplicate]java日历错误的日子[重复]
【发布时间】: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 时,您的值将与指定格式不匹配...

标签: java date calendar


【解决方案1】:

您的格式错误。月份必须是大写的 MM

SimpleDateFormat format = new SimpleDateFormat("yyyy,MM,dd");

小写的毫米是分钟。

    SimpleDateFormat format = new SimpleDateFormat("yyy,MM,dd");
    Date depDate = format.parse("2016,8,28");
    Calendar calDeparture = Calendar.getInstance();
    System.out.println(depDate);
    calDeparture.setTime(depDate);
    System.out.println(calDeparture.get(Calendar.DAY_OF_WEEK));

输出是:

Sun Aug 28 00:00:00 CEST 2016
1

【讨论】:

  • 我得到了同样的结果。没有什么变化。 8 月 28 日打印出一周的第 4 天
  • @denis 对我来说工作正常并返回 1。请参阅我的示例。
  • 我设法让它工作。问题是这行代码:departmentDateTrue = Integer.toString(year)+","+Integer.toString(month)+","+Integer.toString(day);我把它改成了出发日期True = Integer.toString(year)+","+Integer.toString(month+1)+","+Integer.toString(day);
  • @denis 是您未在问题中显示的代码
  • 我知道,但我认为这并不重要。其实我有一个问题 .get(Calendar.MONTH);返回 7(八月)为什么我需要将其更改为 8 才能使代码正常工作
猜你喜欢
  • 1970-01-01
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-17
  • 1970-01-01
相关资源
最近更新 更多