简单的日期封装类( Java)
2674 点击·0 回帖
![]() | ![]() | |
![]() | 本来以为有了date4j就万事无休了,结果在工作的时候发觉有不少脚步仅仅需要两三个简单的class执行一下就可以完成任务了。也就是说即使是date4j,相对于这两三个甚至是一个class来说还是过于臃肿了。于是乎自己写了个简单的日期封装类。 package com.kohri.date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * @descriped a simple class for date * @author Kohri * @date 2012/4/22 * @version 1.0 */ public class SimpleDate { private static String defaultFormat = "yyyy-MM-dd HH:mms"; private static SimpleDateFormat sf = null ; private static Calendar cal = Calendar.getInstance(); private static Date date = null; /** * get current date time (default 'yyyy-MM-dd HH:mms') * @return string */ public static String getDateNow() { sf = new SimpleDateFormat(defaultFormat); String currentTime = ""; currentTime = sf.format(new Date()); return currentTime; } /** * get year (default now) * @return int */ public static int getYear(){ int currentYear = cal.get(Calendar.YEAR); return currentYear; } /** * get mon (default now) * @return int */ public static int getMonth(){ int currentMonth = cal.get(Calendar.MONTH) + 1; return currentMonth; } /** * get day of month (default now) * @return int */ public static int getDay(){ int currentDayOfMonth = cal.get(Calendar.DAY_OF_MONTH); return currentDayOfMonth; } /** * get hours (default now) * @return int */ public static int getHours(){ int currentHours = cal.get(Calendar.HOUR_OF_DAY); return currentHours; } /** * get minutes (default now) * @return int */ public static int getMinutes(){ int currentMinute = cal.get(Calendar.MINUTE); return currentMinute; } /** * get seconds (default now) * @return int */ public static int getSeconds(){ int currentSecond = cal.get(Calendar.SECOND); return currentSecond; } /** * string change to date * @param strDate * @param dateFormat * @return date */ public static Date toDate(String strDate, String dateFormat){ if(strDate == null || strDate.length() == 0){ return null; } Date date = null; DateFormat df = new SimpleDateFormat(dateFormat); try { date = df.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } return date; } /** * Returns this Calendar's time value in milliseconds * @param p_date * @return long */ public static long getMillisOfDate(Date date) { cal.setTime(date); return cal.getTimeInMillis(); } /** * compare two date * return the greater date * if equals return null * @param strStartDate * @param strEndDate * @return date */ public static Date getGreaterDate(String strStartDate, String strEndDate){ Date date = null; Date startDate = toDate(strStartDate, "yyyy-MM-dd"); Date endDate = toDate(strEndDate, "yyyy-MM-dd"); long startTime = getMillisOfDate(startDate); long endTime = getMillisOfDate(endDate); if((startTime - endTime) > 0){ return startDate; }else if((endTime - startTime) > 0){ return endDate; } return date; } /** * get days between 2 different date * @param strStartDate less date (yyyy-MM-dd) * @param strEndDate greater date (yyyy-MM-dd) * @return long */ public static long getDaysOftwoDiffDate(String strStartDate, String strEndDate){ Date startDate = toDate(strStartDate, "yyyy-MM-dd"); Date endDate = toDate(strEndDate, "yyyy-MM-dd"); long startTime = getMillisOfDate(startDate); long endTime = getMillisOfDate(endDate); long betweenDays = (long) ((endTime - startTime) / ( 1000 * 60 * 60 * 24 )); return betweenDays; } /** * get weeks between 2 different date * @param strStartDate less date (yyyy-MM-dd) * @param strEndDate greater date (yyyy-MM-dd) * @return long */ public static long getWeeksOfTwoDiffDate(String strStartDate, String strEndDate){ return getDaysOftwoDiffDate(strStartDate, strEndDate) / 7; } /** * get months between 2 different date * @param strStartDate less date (yyyy-MM-dd) * @param strEndDate greater date (yyyy-MM-dd) * @return long */ public static long getMonthsOfTwoDiffDate(String strStartDate, String strEndDate){ return getDaysOftwoDiffDate(strStartDate, strEndDate) / 30; } /** * get years between 2 different date * @param strStartDate less date (yyyy-MM-dd) * @param strEndDate greater date (yyyy-MM-dd) * @return long */ public static long getYearsOfTwoDiffDate(String strStartDate, String strEndDate){ return getDaysOftwoDiffDate(strStartDate, strEndDate) / 365; } /** * add date * @param date * @param count * @param field Calendar.YEAR(MONTH ..) * @param format DateFormat(yyyy-MM-dd) * @return string */ public static String addDate(Date date,int count,int field,String format){ cal.setTime(date); int year = getYear(); int month = getMonth() - 1; int day = getDay(); int hours = getHours(); int minutes = getMinutes(); int seconds = getSeconds(); Calendar calendar = new GregorianCalendar(year, month, day, hours, minutes, seconds); calendar.add(field,count); DateFormat df = new SimpleDateFormat(format); String tmpDate = df.format(calendar.getTime()); cal.setTime(new Date()); return tmpDate; } /** * calendar settime * @param date */ private static void setCalTime(Date date){ if(date != null){ cal.setTime(date); } } //setter getter public static String getDefaultFormat() { return defaultFormat; } public static void setDefaultFormat(String defaultFormat) { SimpleDate.defaultFormat = defaultFormat; } public static Date getDate() { return date; } public static void setDate(Date date) { SimpleDate.date = date; setCalTime(date); } } 摘自 静以修心 | |
![]() | ![]() |