Kotlin DateTimeformat返回错误的月份

Fla*_*Dog 2 android datetime-format kotlin

简单的代码,但有些错误!我是Kotlin的新手,试图获取日期字符串并将其转换为Date()格式.当我转换回来时,它会给出错误的月份.例:

var cal = Calendar.getInstance()
cal.timeZone = TimeZone.getTimeZone("America/New_York")
cal.set(2018, 1, 20)
val date: Date = cal.time
println(date)  //This prints: Tue Feb 20 23:25:59 EST 2018
Run Code Online (Sandbox Code Playgroud)

当月份设定为1(1月)时,为什么我得到2月?

最后,我想采用"MM/dd/yyyy"格式的字符串并将其转换为Date()格式,但似乎遇到了麻烦(需要支持API 15),并且使用Calendar是我尝试做的事情没有需要以后API的日期格式化程序.有更好的方法吗?

uba*_*dub 5

CalendarJava中的类的月份是0索引的.

cal.set(2018, 0, 20)

就是你的意思.

但是,这就是使用Calendar类中定义的最终int字段通常更好的原因,而不是硬编码数字.在这种情况下,那是JANUARY.看到这里.

这会给:

cal.set(2018, Calendar.JANUARY, 20)