繁体   English   中英

使用日历设置日期的第二天时,日期和月份不正确

[英]Day and month incorrect when setting next day of date using Calendar

//fetch date and convert to date type
String DateString = Integer.toString(getDay()) + "/" + Integer.toString(getMonth()) + "/" + Integer.toString(getYear());
DateFormat parser = new SimpleDateFormat("dd/MM/yyyy"); //current format of date
Date date = (Date) parser.parse(DateString); //convert string to date
//calculate next day
Calendar cal = Calendar.getInstance();
cal.setTime(date); //set calendar time to chosen date
cal.add(Calendar.DATE, 1); //add 1 day to calendar date
//set object to next day
parser.format(cal.getTime()); //set format to dd/MM/yyyy
setDay(cal.get(cal.DAY_OF_MONTH));
setMonth(cal.get(cal.MONTH));
setYear(cal.get(cal.YEAR));

我将日期设定为2002年10月23日。我想使用上述方法将其设置为第二天。 它显示的是2002年9月24日而不是2002年10月24日。为什么它在当天增加1并从月中删除1?

原因是月份是基于零的指数,即,它们从0开始而不是1,因此1月是0,2月是1,3月是2和...... Decemeber是11

来自Oracle文档

一个月由0到11的整数表示; 0是1月,1是2月,依此类推; 因此11月是12月。

编辑:-

试图说明为什么几个月从零开始的原因。 time.h中定义的tm结构有一个整数字段tm_mon ,范围为0-11,所以我猜这是从C语言中获取的。 另一个可能听起来很奇怪的原因,但可能是因为我们有月份的名称,但有几天(1,2,3 ...... 30,31),我们没有任何名字

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM