【问题标题】:Getting to wrong day of the week when using the object java.util.Date [duplicate]使用对象 java.util.Date 时出现错误的星期几 [重复]
【发布时间】:2016-11-16 00:05:53
【问题描述】:

我正在尝试从 datePicker 检索日期并创建一个 java.util.Date 对象,但我不明白为什么我在 selectedDate 中得到错误的星期几多变的。 currentDate 变量是正确的。

String dateStr =  String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear) + "/" + String.valueOf(year);
String timeStr = String.valueOf(hourOfDay) + ":" + String.valueOf(minute);

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date selectedDate = simpleDateFormat.parse(dateStr + " " + timeStr);
Date currentDate = Calendar.getInstance().getTime();

System.out.println("selectedDate = " + String.valueOf(selectedDate));
System.out.println("currentDate  = " + String.valueOf(currentDate));

输出:

selectedDate = Mon Jun 13 12:44:00 WEST 2016
currentDate  = Wed Jul 13 12:44:04 WEST 2016

【问题讨论】:

    标签: java android


    【解决方案1】:

    您应该检查(打印或调试)monthOfYear 的值 - 输出显示它的值是 6,而您似乎期望它是 7(可能是因为您没有考虑到 datePicker.getMonth() 返回的事实一个介于 0 和 11 之间的值)。

    由于你没有展示你是如何获得价值的,所以很难说更多。

    【讨论】:

      【解决方案2】:

      试试这个:

      Calendar c = Calendar.getInstance();
      
      int[] date = {
              c.get(Calendar.DATE), c.get(Calendar.MONTH), 
              c.get(Calendar.YEAR), c.get(Calendar.DAY_OF_WEEK)
      };
      
      date[1]+=1;
      

      此设置使用集成到 Android 中的 Calendar 类。需要 date[1] += 1 才能获得准确的月份,因为它的索引从 0 到 11。据我所知,其他都很好。

      【讨论】:

        【解决方案3】:

        它实际上在寻找我,从某个点开始从“0”开始计数,然后从“1”开始计数。

        也许先尝试将字符串传递到控制台进行调试。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-08-08
          • 2014-11-15
          • 1970-01-01
          • 2017-12-10
          • 2021-08-05
          • 2020-10-19
          • 2020-02-23
          相关资源
          最近更新 更多