Java中Date不好用,建議使用那個名字長的有點變態(tài)的什么Calendar類!
我想得到當(dāng)前日期,然后將當(dāng)前日期加上某一個整數(shù),得到下一個日期,我今天在測試過程中發(fā)現(xiàn)Date類不好用,今天是2005-01-14,我想得到前28天的日期,我寫了個方法:
//傳入一個int的時間,經(jīng)和當(dāng)前日期相加或者相減,得到一個新日期 // public static String strToDateByInt(int i, String operator) { // long j = 0; // long tmp; // // Date d = new Date(); // // tmp = (long)(d.getTime()/24 * 3600 * 1000); // // if ("-".equals(operator)) { // j = d.getTime() - i * 24 * 3600 * 1000; // // } else if ("+".equals(operator)) { // j = d.getTime() + i * 24 * 3600 * 1000; // } // Date a = new Date(j); // // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // // // System.out.println(sdf.format(a)); // return sdf.format(a); // // }
結(jié)果當(dāng)我調(diào)用這個方法時候,得到的結(jié)果竟然是2005-02-07,而這個數(shù)值在25-51之間時結(jié)果就不對(感謝認(rèn)真的測試人員!)。
不得已,我查了些資料,將方法改寫如下: public static String strToDateByInt(int i, String operator) { long j = 0;
Date d = new Date(); // System.out.println("Y=" + d.getYear() + 1900); // System.out.println("M=" + d.getMonth()); // System.out.println("Day=" + d.getDay()); // System.out.println("Date=" + d.getDate()); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(d); System.out.println(d.getTime()); if ("+".equals(operator)) { gc.add(GregorianCalendar.DATE, i); } else if ("-".equals(operator)) { gc.add(GregorianCalendar.DATE, (-i)); } Date a = gc.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(a);
}
然后就可以了,其實這樣解決也可以,但是讓我討厭的是這么長的類名,感覺有些變態(tài)! 而且上面的注釋掉的代碼// System.out.println("Day=" + d.getDay()); 打印出來并不是日期中的天,而是星期幾!!!!!!!!!!!
感覺Java開發(fā)真是挺費勁的,而且隨著演化,好像越來越復(fù)雜,今天的輸入法不好用,就寫到這里了!!! |