Web開發中常用的時間處理Java工具類

by57 9年前發布 | 4K 次閱讀 Java

import static java.util.Calendar.HOUR_OF_DAY;
import static java.util.Calendar.MILLISECOND;
import static java.util.Calendar.MINUTE;
import static java.util.Calendar.SECOND;

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List;

/**

  • Copyright (c) 2011 sxgkwei
  • Author:sxgkwei
  • Email:sxgkwei@gmail.com
  • Date: 2012-03-30 13:01:21
  • JDK: 1.6.2 */ public class DateUtil extends org.apache.commons.lang.time.DateUtils {

    /**

    • 默認的日期格式化樣式 */ public static final String DAY_PATTERN = "yyyy-MM-dd"; /**
    • 默認的時間格式化樣式 */ public static final String TIME_PATTERN = "HH:mm:ss";

      /**

    • 將Date格式化成符合默認格式的字符串
    • @param date
    • @return 返回樣例:2012-03-29 14:32:23 */ public static String format(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN); return formatTool.format(date); }

      /**

    • 將Date格式化成符合默認日期格式的字符串
    • @param date
    • @return 返回樣例:2012-03-29 */ public static String formatDate(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN); return formatTool.format(date); }

      /**

    • 將Date格式化成符合默認時間格式的字符串
    • @param date
    • @return 返回樣例:14:32:23 */ public static String formatTime(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(TIME_PATTERN); return formatTool.format(date); }

      /**

    • 按照pattern格式格式化Date
    • @param date
    • @param pattern
    • 樣例: yyyy/MM/dd
    • @return 返回樣例:2012/03/29 */ public static String format(Date date, String pattern) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(pattern); return formatTool.format(date); }

      /**

    • 將符合默認格式的字符串轉換成Date
    • @param dateValue
    • 樣例:2012-03-29 14:32:23
    • @return
    • @throws ParseException */ public static Date parse(String dateValue) throws ParseException { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN); return formatTool.parse(dateValue); }

      /**

    • 將符合默認格式的日期字符串轉換成Date
    • @param dateValue
    • 樣例:2012-03-29
    • @return
    • @throws ParseException */ public static Date parseDate(String dateValue) throws ParseException { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN); return formatTool.parse(dateValue); }

      /**

    • 將符合pattern格式的dateValue轉換成Date
    • @param dateValue
    • 樣例:2012/03/29
    • @param pattern
    • 樣例:yyyy/MM/dd
    • @return
    • @throws ParseException */ public static Date parse(String dateValue, String pattern)

       throws ParseException {
      

      SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(pattern); return formatTool.parse(dateValue); }

      /**

    • 返回這一天的最早的時候
    • @param date
    • @return */ public static Date getEarliest(Date date) { return parseTime(date, 0, 0, 0, 0); }

      /**

    • 返回這一天的最晚時候
    • @param date
    • @return */ public static Date getLastest(Date date) { return parseTime(date, 23, 59, 59, 999); }

      /**

    • 得到指定月的天數
    • @param year
    • @param month
    • @return */ public static int getMonthLastDay(int year, int month) { Calendar a = Calendar.getInstance(); a.set(Calendar.YEAR, year); a.set(Calendar.MONTH, month - 1); a.set(Calendar.DATE, 1);// 把日期設置為當月第一天 a.roll(Calendar.DATE, -1);// 日期回滾一天,也就是最后一天 int maxDate = a.get(Calendar.DATE); return maxDate; }

      /**

    • 返回指定時間加上num天后的時間
    • @param date
    • @param num
    • @return */ public static Date add(Date date, int num) { Calendar a = Calendar.getInstance(); a.setTime(date); a.add(Calendar.DAY_OF_MONTH, num); return a.getTime(); }

      /**

    • 返回false:date=null,date是1970年;其它都返回true
    • @param date
    • @return */ public static boolean isNotEmpty(Date date) { if (date != null) {

       Calendar a = Calendar.getInstance();
       a.setTime(date);
       return a.get(Calendar.YEAR) != 1970;
      

      } return Boolean.FALSE; }

      /**

    • 獲得date的小時數0-23
    • @param date
    • @return */ public static int getHours(Date date) { Calendar a = Calendar.getInstance(); a.setTime(date); return a.get(Calendar.HOUR_OF_DAY); }

      /**

    • 獲得date是一周的第幾天,注意:周日 返回 1,周六 返回 7
    • @param date
    • @return */ public static int getDay(Date date) { Calendar a = Calendar.getInstance(); a.setTime(date); return a.get(Calendar.DAY_OF_WEEK); }

      /**

    • 設定date的時間細節
    • @param date
    • 要設定時間細節的date
    • @param hourOfDay
    • 0-23
    • @param minute
    • 0-59
    • @param second
    • 0-59
    • @param milliSecond
    • 0-999
    • @return */ public static Date parseTime(Date date, int hourOfDay, int minute,

       int second, int milliSecond) {
      

      Calendar cal = Calendar.getInstance(); cal.setTime(date); setCalendarTime(cal, hourOfDay, minute, second, milliSecond); return cal.getTime(); }

      /**

    • 設定date的時間細節
    • @param date
    • 要設定時間細節的date
    • @param timeDetail
    • 以:號分隔的24小時制的時間,例:16:23:42:267 或 16(等同于16:00:00:000)
    • @return */ public static Date parseTime(Date date, String timeDetail) {

      List<String> strList = new ArrayList<String>(); strList.addAll(Arrays.asList(timeDetail.split(":")));

      while (strList.size() < 4) {

       strList.add("0");
      

      } return parseTime(date, Integer.parseInt(strList.get(0)),

           Integer.parseInt(strList.get(1)),
           Integer.parseInt(strList.get(2)),
           Integer.parseInt(strList.get(3)));
      

      }

      /**

    • 指定時間 是否在 當前時間 之后,注:和日期無關
    • @param time
    • 指定的時間, 傳入樣例:16:23:42:267 或 16(等同于16:00:00:000)
    • @return */ public static boolean isAfterTime(String time) { Date date = parseTime(new Date(), time); return date.after(new Date()); }

      /**

    • 指定時間 是否在 當前時間 之前,注:和日期無關
    • @param time
    • 指定的時間, 傳入樣例:16:23:42:267 或 16(等同于16:00:00:000)
    • @return */ public static boolean isBeforeTime(String time) { Date date = parseTime(new Date(), time); return date.before(new Date()); }

      private static void setCalendarTime(Calendar cal, int hourOfDay,

       int minute, int second, int milliSecond) {
      

      cal.set(HOUR_OF_DAY, hourOfDay); cal.set(MINUTE, minute); cal.set(SECOND, second); cal.set(MILLISECOND, milliSecond); } } </pre>

 本文由用戶 by57 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!