Exception in thread "main" java.lang.IllegalArgumentException at java.sql.Date.getHours(Date.java:177)
一看源碼,坑爹啊:
123
public int getHours() { throw new java.lang.IllegalArgumentException(); }
在java.util.Date里面好好的方法怎么變成這個鳥樣了? 方法注釋給出了說明: This method is deprecated and should not be used because SQL Date values do not have a time component. 也就是說,java.sql.Date是SQL中的單純的日期類型,哪會有時分秒啊?我覺得它根本不應該設計成java.util.Date的子類。如果你把java.sql.Date通過JDBC插入數(shù)據(jù)庫,你會發(fā)現(xiàn)時分秒都丟失了,因此如果你同時需要日期和時間,你應該使用Timestamp,它也是java.util.Date的子類。 另外還有一個java.util.Date的子類叫Time,java.sql包下面的Date、Time和Timestamp可以放在一起記憶。Date只包含年月日信息、Time只包含時分秒信息,而Times則包含時間戳的完整信息。 現(xiàn)在知道人家拋出IllegalArgumentException的用心良苦了吧…… 坑爹的year和month 看看Date類的構造器:
1
public Date(int year, int month, int day)
長得并不奇葩嘛。 好,現(xiàn)在我要輸出2012年的1月1號了:
12
Date date = new Date(2012,1,1); System.out.println(date);