我写了下面的java代码,以特定格式格式化日期和时间。你可以在ideone看到下面的代码。日期格式化程序没有正确格式化日期
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.text.SimpleDateFormat;
class timeAndDateTransformation{
public static void main(String[] argv){
Calendar newDate = new GregorianCalendar(2009,7,1,15,20,00);
SimpleDateFormat dateFormant = new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat timeFormant = new SimpleDateFormat("HH:mm:ss");
System.out.println(dateFormant.format(newDate.getTime()).toString());
System.out.println(timeFormant.format(newDate.getTime()).toString());
}
}
它给我下面的输出:
2009/08/01
15:20:00
在此输出,其余全部是完全没问题,除了一个月。我作为一个月通过7,但在这个事情输出它给8输出。请指出我在哪里做错了。我不是很熟悉java的日期/日历类,所以请耐心等待。
啊..有没有人知道它背后的任何具体原因,因为几天它是1-31.In日期/时间元素只有一天从1开始,其余都是零基于,所以更具体的问题可能是,为什么他们没有设计日子也开始从0-30 :)? – 2010-10-21 17:47:11
您可以使用像Calendar.AUGUST这样的内置常量来避免此问题。 – 2010-10-21 17:57:21
@阿尼尔:是的,月份是唯一的基于0的字段。数年来这个数字是唯一的参考,所以从中减去一个是明显可怕的,因为几个月主要是通过名称(英语,而不是像日语这样的一些语言)知道的,他们觉得可以更改编号。不好的决定,但。 – 2010-10-21 17:57:29