Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date_Date Format_Simpledateformat - Fatal编程技术网

Java 以简单日期格式解析月份的问题

Java 以简单日期格式解析月份的问题,java,date,date-format,simpledateformat,Java,Date,Date Format,Simpledateformat,我得到的字符串值类似于string val=“2012-08-01T12:00”,我使用下面的代码从中创建日历类型,问题是当我打印我从07月份而不是08月份获得的数据时,我如何解决它以获得准确的月份 1-7-2012-12-0-0 是基于0的,所以您得到的是正确的。只需添加一个 Calendar,因此添加1将把它转换为我们都熟悉的1-12范围 引用上面链接的javadocs: 格里高利历法和朱利安历法中一年的第一个月是 一月是0 你的问题是: cal.get(Calendar.MONTH) 一

我得到的字符串值类似于
string val=“2012-08-01T12:00”
,我使用下面的代码从中创建日历类型,问题是当我打印我从07月份而不是08月份获得的数据时,我如何解决它以获得准确的月份

1-7-2012-12-0-0

是基于0的,所以您得到的是正确的。

只需添加一个

Calendar
,因此添加
1
将把它转换为我们都熟悉的1-12范围

引用上面链接的javadocs:

格里高利历法和朱利安历法中一年的第一个月是 一月是0

你的问题是:

cal.get(Calendar.MONTH)

一月=0(1),二月=1(非2),等

月份在日历中为零索引。如果您想获得一个索引月份,则需要使用另一个格式为
MM
SimpleDateFormat


因此,您可以使用

SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
System.out.println(formatter.format(cal));

@Johnjerby在cal.setTime()中不执行任何操作,根据惯例,月份为0,您宁愿执行…+(日历月)+1)+。。。在你的System.out.println()中,没有办法通过set方法来处理它,因为我需要将它更新为一些API,而这个API没有向月份添加一个API,同时有一种方法可以通过set方法以某种方式处理它?如果你使用的API使用Calendar对象,并且它使用cal.get(Calendar.month)作为1,那么该API就有一个bug,对此你无能为力,除非你有这样一个API的代码如果你有一个API使用
String
连接并访问基础
Calendar
属性来字符串化
Calendar
,那么就应该找到API的编写者,连接,然后…你能提供一个例子吗?嗨,Boris,这不是一个奇怪的字符串,我需要它,因为这是Odata datetime格式…我无法更改它。
字符串
连接不是将
日历
转换为
字符串的方式。
日历
具有其数据的内部表示形式,这与您无关。您应该使用
SimpleDateFormat
日历
转换为
字符串
s或从
字符串
s转换。如果我想在set方法而不是在syso中处理它,有没有办法?
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss");
System.out.println(formatter.format(cal));