Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android,Calendar.getInstance()未给出正确的月份_Java_Android - Fatal编程技术网

Java Android,Calendar.getInstance()未给出正确的月份

Java Android,Calendar.getInstance()未给出正确的月份,java,android,Java,Android,我正在尝试编写代码来查找两个日期之间的日期差,但Calendar.getInstance()会继续获取上个月的日期,而不是当前月份的日期 例如:当前的2014年7月17日它得到了2014年6月17日 我的代码: TextView textview=(TextView) findViewById (R.id.textView1); Calendar cal = Calendar.getInstance(); Calendar startDate=Calendar.getInstance

我正在尝试编写代码来查找两个日期之间的日期差,但Calendar.getInstance()会继续获取上个月的日期,而不是当前月份的日期 例如:当前的2014年7月17日它得到了2014年6月17日 我的代码:

 TextView textview=(TextView) findViewById (R.id.textView1);

  Calendar cal = Calendar.getInstance();

 Calendar startDate=Calendar.getInstance();
 startDate.set(Calendar.DAY_OF_MONTH, 1);
 startDate.set(Calendar.MONTH,1);
    startDate.set(Calendar.YEAR, 2013);

long diff=(((cal.getTimeInMillis()-startDate.getTimeInMillis())/(1000*60*60*24))+1);
    String sdiff=String.valueOf(diff);

    String stt=cal.get(Calendar.YEAR) +"_"+cal.get(Calendar.MONTH)+"_"+cal.get(Calendar.DAY_OF_MONTH);
    textview.setText(stt);

月份从0开始,而不是从1开始,但如果在获取或设置月份时不使用幻数,而是使用常量,则不必担心这个问题。所以不是这样:

startDate.set(Calendar.MONTH,1);  // this is February!
而是

startDate.set(Calendar.MONTH, Calendar.JANUARY);

Java的
日历中的月份从1月份的
0开始,因此7月份是
6
,而不是
7

在公历和儒略历法中,一年的第一个月是1月,也就是0

1
添加到
get
的结果中

(cal.get(Calendar.MONTH) + 1)
这也会影响您的
设置
调用。您可以在传入月数时减去
1
,也可以使用
Calendar
常量,例如
Calendar.janur

您还可以使用一个将其转换为您的特定格式,而不必担心这种怪癖

SimpleDateFormat sdf = new SimpleDateFormat("yyyy_MM_dd");
String stt = sdf.format(cal.getTime());

可能重复但值错误com form Calendar cal=Calendar.getInstance(),它显示的是2014年6月17日,而不是当前的2014年7月17日。请参考,现在我知道错误在哪里了,我使用cal.add(Calendar.Month,1)修复了它;考虑到您的信息,现在我知道错误在哪里了,我使用cal.add(Calendar.Month,1)修复它;