最近,公司為保險公司提供一個人員行程數據Api接口,當中業務邏輯中涉及到大量的日期對象處理與判斷。
之前,一直是用C#(Asp.Net)進行日期處理,一個 DateTime.Now 基本上可以得到一切結果.
但是,在Java 中就不行了,雖然也有 Date 這個對象中提供的一些直接獲取日期的方法,但是都已經被官網標准為不推薦使用狀態了,
官網推薦使用 Calendar 這個對象結合 Date 去使用,既然不推薦那就不用。
直接上封裝好的代碼:
package xingzhi.tools; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; /** * 對象幫助類. * @author xingzhi 2020年4月28日 上午9:12:32 * */ public class DateHelper { /** * 日歷對象 * @author xingzhi 2020年6月5日 下午4:22:32 */ private static Calendar cal; /** * 初始化日歷對象. * @author xingzhi 2020年6月5日 上午9:16:27 */ private static void Initial() { if(cal == null) { cal = Calendar.getInstance(); } } /** * 獲取當前時間對象 * @author xingzhi 2020年4月28日 下午9:11:54 * @return */ public static Date GetCurrentDate() { Date d = new Date(); return d; } /** * 獲取指定日期的年. * @author xingzhi 2020年6月5日 下午4:23:26 * @param d * @return */ public static int GetDateForYear(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.YEAR); } /** * 獲取指定日期的月份 * @author xingzhi 2020年6月5日 上午9:24:17 * @return 返回一個整數表示的月份值.從0-11. */ public static int GetDateForMonth(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.MONTH); } /** * 獲取指定日期每月的天數. * @author xingzhi 2020年6月5日 上午9:29:58 * @param d * @return */ public static int GetDateForDay(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.DATE); } /** * 獲取指定日期的小時數. * @author xingzhi 2020年6月5日 上午9:32:21 * @return */ public static int GetDateForHour(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.HOUR); } /** * 獲取指定日期的分鍾數. * @author xingzhi 2020年6月5日 上午9:32:21 * @return */ public static int GetDateForMinute(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.MINUTE); } /** * 獲取指定日期的秒數. * @author xingzhi 2020年6月5日 上午9:32:21 * @return */ public static int GetDateForSecond(Date d) { Initial(); cal.setTime(d); return cal.get(Calendar.SECOND); } }
使用方法
package xingzhi.test; import xingzhi.tools.DateHelper;public class Testing { /** * 測試函數入口 * @author xingzhi 2020年6月11日 上午9:22:17 * @param args */ public static void main(String[] args) { TestingDate(); }/** * 日期幫助類測試 * @author xingzhi 2020年6月11日 上午9:46:33 */ static void TestingDate() { Output("當前日期:" + DateHelper.GetCurrentDate()); Output("當前年:" + DateHelper.GetDateForYear(DateHelper.GetCurrentDate())); Output("當前月:" + DateHelper.GetDateForMonth(DateHelper.GetCurrentDate())); Output("當前日:" + DateHelper.GetDateForMonth(DateHelper.GetCurrentDate())); Output("當前時:" + DateHelper.GetDateForHour(DateHelper.GetCurrentDate())); Output("當前分:" + DateHelper.GetDateForMinute(DateHelper.GetCurrentDate())); Output("當前秒:" + DateHelper.GetDateForSecond(DateHelper.GetCurrentDate())); } /** * 記錄輸出 * @author xingzhi 2020年6月11日 上午10:10:57 * @param obj */ static void Output(Object obj) { System.out.println(obj); } }