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