使用对象java.util.Date时出现错误的星期几

时间:2016-07-13 11:54:47

标签: java android

我试图从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

3 个答案:

答案 0 :(得分:2)

你应该检查(打印或调试)monthOfYear的值 - 当你看起来它是7时,输出显示它的值是6(可能是因为你没有考虑到这个事实datePicker.getMonth()返回0到11之间的值。

由于您没有表明您是如何获得价值的,因此很难说出来。

答案 1 :(得分:0)

试试这个:

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;

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

答案 2 :(得分:0)

它实际上是在寻找我,有一点你开始从'0'开始计数,另一方面从'1'开始计算。

可能会尝试将字符串传递给控制台进行调试。