Java Android,Calendar.getInstance()未给出正确的月份
我正在尝试编写代码来查找两个日期之间的日期差,但Calendar.getInstance()会继续获取上个月的日期,而不是当前月份的日期 例如:当前的2014年7月17日它得到了2014年6月17日 我的代码: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
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)修复它;