Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.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 日历功能_Java - Fatal编程技术网

Java 日历功能

Java 日历功能,java,Java,输入日期是2016-01-01,但为什么输出显示2016/02/01 String df = "2016-01-01"; String enddate=""; SimpleDateFormat DATE_FORMAT_QUERY = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'"); Calendar cal=Calendar.getInstance(); String[] dateStr=df.split("-"); int year=Integer

输入日期是
2016-01-01
,但为什么输出显示
2016/02/01

String df = "2016-01-01";
String enddate="";
SimpleDateFormat DATE_FORMAT_QUERY = new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");

Calendar cal=Calendar.getInstance();
String[] dateStr=df.split("-"); 
int year=Integer.parseInt(dateStr[0]);
int month=Integer.parseInt(dateStr[1]);
int day=Integer.parseInt(dateStr[2]);
cal.set(year,month,day,23, 59,59);
System.out.println(cal.getTime());
enddate=DATE_FORMAT_QUERY.format(cal.getTime());
System.out.println(enddate);
输出:

Mon Feb 01 23:59:59 EST 2016 20160201T235959Z

回答您的问题

输入日期是2016-01-01,但为什么输出显示2016/02/01

因为是基于0的。

month
-用于设置
month
日历字段的值月份值以0为基础。e、 g.,1月份为0。

你应该使用

int month=Integer.parseInt(dateStr[1] - 1);

正确的解决方案

从不手动解析包含日期的
字符串
,最好使用
SimpleDateFormat
获取日期,并使用它设置
日历
时间:

SimpleDateFormat dfo = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.setTime(dfo.parse("2016-01-01"));
输出:

Fri Jan 01 00:00:00 CET 2016
20160101T000000Z

回答您的问题

输入日期是2016-01-01,但为什么输出显示2016/02/01

因为是基于0的。

month
-用于设置
month
日历字段的值月份值以0为基础。e、 g.,1月份为0。

你应该使用

int month=Integer.parseInt(dateStr[1] - 1);

正确的解决方案

从不手动解析包含日期的
字符串
,最好使用
SimpleDateFormat
获取日期,并使用它设置
日历
时间:

SimpleDateFormat dfo = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal=Calendar.getInstance();
cal.setTime(dfo.parse("2016-01-01"));
输出:

Fri Jan 01 00:00:00 CET 2016
20160101T000000Z

为什么不使用
SimpleDateFormat
来解析输入日期,而不是自己解析?为什么不使用
SimpleDateFormat
来解析输入日期,而不是自己解析?感谢您的帮助
;) @ PanayappanSwaminathan,只要你必须知道如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。当然没有义务这样做。感谢您的澄清帮助
;) @ PanayappanSwaminathan,只要你必须知道如果这个或任何答案已经解决了你的问题,请考虑点击复选标记。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。当然,没有义务这样做。