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));