我寫了下面的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