Java操作日期時間范例代碼大全

dw23 9年前發布 | 5K 次閱讀 Java

import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;

import org.apache.commons.lang.StringUtils;

/**

  • 日期工具類
  • @author yugc */ public final class DateUtil {

    private DateUtil() {

    }

    /**

    • yyyy-MM-dd */ public static final String FORMAT1 = "yyyy-MM-dd";

      /**

    • yyyy.MM.dd */ public static final String FORMAT2 = "yyyy.MM.dd";

      /**

    • yyyy/MM/dd */ public static final String FORMAT3 = "yyyy/MM/dd";

      /**

    • yyyy-MM-dd HH:mm */ public static final String FORMAT4 = "yyyy-MM-dd HH:mm";

      /**

    • yyyy.MM.dd HH:mm */ public static final String FORMAT5 = "yyyy.MM.dd HH:mm";

      /**

    • yyyy/MM/dd HH:mm */ public static final String FORMAT6 = "yyyy/MM/dd HH:mm";

      /**

    • yyyy-MM-dd HH:mm:ss */ public static final String FORMAT7 = "yyyy-MM-dd HH:mm:ss";

      /**

    • YYYY-MM-dd HH-mm-ss */ public static final String FORMAT15 = "YYYY-MM-dd HH-mm-ss";

      /**

    • yyyy.MM.dd HH:mm:ss */ public static final String FORMAT8 = "yyyy.MM.dd HH:mm:ss";

      /**

    • yyyy/MM/dd HH:mm:ss */ public static final String FORMAT9 = "yyyy/MM/dd HH:mm:ss";

      /**

    • yyyy_MM_dd_HH_mm_ss */ public static final String FORMAT10 = "yyyy_MM_dd_HH_mm_ss";

      /**

    • yy-MM-dd */ public static final String FORMAT11 = "yy-MM-dd";

      /**

    • yyyyMMdd */ public static final String FORMAT12 = "yyyyMMdd";

      /**

    • yyyyMMddHHmmss */ public static final String FORMAT13 = "yyyyMMddHHmmss";

      /**

    • yyyyMM */ public static final String FORMAT14 = "yyyyMM";

      public static Date getCurrentDate() {

      return new Date(System.currentTimeMillis()); }

      public static Date getYesterDay() {

      return addDay(new Date(System.currentTimeMillis()), -1); }

      public static String getYesterDayString() {

      return parseDateToString(addDay(new Date(System.currentTimeMillis()), -1), FORMAT1); }

      /**

    • 得到年月日的路徑
    • @return */ public static String getThisYearMonthDay(String dateString) {

      Date date = parseStringToDate(dateString, FORMAT12);

      return DateUtil.getYear(date) + "/" + DateUtil.getMonth(date) + "/" + DateUtil.getDay(date) + "/"; }

      /**

    • 返回當前日期或時間
    • @param format
    • @return */ public static String getCurrentDate(String format) {

      if (StringUtils.isBlank(format)) {

       format = FORMAT1;
      

      }

      Date date = new Date();

      SimpleDateFormat formatter = new SimpleDateFormat(format);

      String currentTime = formatter.format(date);

      return currentTime; }

      /**

    • 返回當前時間
    • @return */ public static String getCurrentTime() {

      String datetime = getCurrentDate(FORMAT7); String time = datetime.substring(datetime.indexOf(" ") + 1);

      return time; }

      /**

    • 返回當前時間加隨機數
    • @return */ public static String getCurrentDateTimeRandom() {

      String datetime = getCurrentDate(DateUtil.FORMAT10) + "_" + Math.random();

      return datetime; }

      /**

    • 返回當前時間和日期
    • @return */ public static String getCurrentDateTimeString() {

      return getCurrentDate(DateUtil.FORMAT7);

      }

      /**

    • 返回當前日期
    • @return */ public static Date getCurrentDateTime() {

      String datetime = getCurrentDate(FORMAT7);

      return parseStringToDate(datetime, ""); }

      public static Timestamp getCurrentTimestamp() {

      String datetime = getCurrentDate(FORMAT7);

      return parseStringToTimestamp(datetime, ""); }

      public static Timestamp getCurrentTimestamp(String format) {

      String datetime = getCurrentDate(format);

      return parseStringToTimestamp(datetime, ""); }

      /**

    • 日期轉換為字符串
    • @param date 日期
    • @param format 格式
    • @return 返回字符型日期 */ public static String parseDateToString(Date date, String format) {

      String result = ""; DateFormat formatter = null; try {

       if (date != null) {
           if (StringUtils.isBlank(format)) {
               formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
           }
           else {
               formatter = new SimpleDateFormat(format);
           }
           result = formatter.format(date);
       }
      

      } catch (Exception e) { }

      return result; }

      /**

    • 時間1-時間2的毫秒
    • @param t1
    • @param t2
    • @return */ public static long between(Timestamp t1, Timestamp t2) {

      if ((t1 != null) && (t2 != null)) {

       return t1.getTime() - t2.getTime();
      

      }

      return 0; }

      /**

    • 兩個日期date1-date2相減,相差的天數
    • @param date1
    • 日期
    • @param date2
    • 日期
    • @return 返回相減后的日期 */ public static int betweenTwoDates(Date date1, Date date2) {

      return (int) ((getMillis(date1) - getMillis(date2)) / (24 3600 1000)); }

      /**

    • 將字符串轉換為日期
    • @param str
    • @return
    • @throws ParseException */ public static Date parseStringToDate(String str, String format) {

      DateFormat formatter = null; Date date = null; if (StringUtils.isNotBlank(str)) {

       if (StringUtils.isBlank(format)) {
           formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       }
       else {
           formatter = new SimpleDateFormat(format);
       }
      
       try {
           date = formatter.parse(str);
       }
       catch (ParseException e) {
           e.printStackTrace();
       }
      

      }

      return date; }

      /**

    • 返回2007到今年的年份
    • @return */ public static List<Integer> get2007ToThisYear() {

      // 當前時間 Calendar c = Calendar.getInstance(); c.setTime(new Date());

      // 返回的年份 List<Integer> the2007ToThisYearList = new ArrayList<Integer>(); // 當前年 int thisYear = c.get(Calendar.YEAR);

      for (int i = thisYear; i >= 2007; i--) {

       the2007ToThisYearList.add(i);
      

      }

      return the2007ToThisYearList; }

      /**

    • 獲取當前月的前幾個月份的時間
    • @param months
    • @return */ public static Date getDateBeforeMonths(int months) {

      // 當前時間 Calendar c = Calendar.getInstance();

      c.add(Calendar.MONTH, -months);

      return c.getTime(); }

      /**

    • 獲取當前日期的前幾天的時間
    • @param days
    • @return */ public static Date getDateBeforeDays(int days) {

      // 當前時間 Calendar c = Calendar.getInstance();

      c.add(Calendar.DATE, -days); return c.getTime(); }

      /**

    • 返回1-12月份
    • @return */ public static List<String> getAllMonth() {

      List<String> theMonthList = new ArrayList<String>();

      for (int i = 1; i < 13; i++) {

       if (i < 10) {
           theMonthList.add("0" + i);
       }
       else {
           theMonthList.add("" + i);
       }
      

      }

      return theMonthList; }

      /**

    • 返回日期中的年份
    • @param date
    • 日期
    • @return 返回年份 */ public static int getYear(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.YEAR); }

      /**

    • 返回日期中的月份
    • @param date
    • 日期
    • @return 返回月份 */ public static int getMonth(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.MONTH) + 1; }

      /**

    • 返回日期中的日
    • @param date
    • 日期
    • @return 返回日 */ public static int getDay(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.DAY_OF_MONTH); }

      /**

    • 返回日期中的小時
    • @param date
    • 日期
    • @return 返回小時 */ public static int getHour(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.HOUR_OF_DAY); }

      /**

    • 返回日期中的分鐘
    • @param date
    • 日期
    • @return 返回分鐘 */ public static int getMinute(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.MINUTE); }

      /**

    • 返回日期中的秒鐘
    • @param date
    • 日期
    • @return 返回秒鐘 */ public static int getSecond(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.get(Calendar.SECOND); }

      /**

    • 返回日期代表的毫秒
    • @param date
    • 日期
    • @return 返回毫秒 */ public static long getMillis(Date date) {

      Calendar c = Calendar.getInstance(); c.setTime(date);

      return c.getTimeInMillis(); }

      /**

    • 返回當前日期代表的毫秒
    • @return */ public static long getCurrentTimeMillis() {

      return System.currentTimeMillis(); }

      public static Date addMonth(Date date, int month) {

      Calendar c = Calendar.getInstance(); c.setTime(date); c.add(c.MONTH, month);

      return c.getTime(); }

      /**

    • 日期加天數,可以向前加,向后加
    • @param date
    • 日期
    • @param day
    • 天數
    • @return 返回相加后的日期 */ public static Date addDay(Date date, int day) {

      Calendar c = Calendar.getInstance(); c.setTimeInMillis(getMillis(date) + ((long) day) 24 3600 * 1000);

      return c.getTime(); }

      /**

    • 日期加秒數,可以向前加,向后加
    • @param date
    • 日期
    • @param second
    • 秒數
    • @return 返回相加后的日期 */ public static Date addSecond(Date date, long second) {

      Calendar c = Calendar.getInstance(); c.setTimeInMillis(getMillis(date) + second * 1000);

      return c.getTime(); }

      /**

    • 根據一個日期,返回是星期幾
    • @param sdate
    • @return
      */ public static String getWeekByDate(String sdate) {

      // 再轉換為時間 Date date = parseStringToDate(sdate, ""); Calendar c = Calendar.getInstance(); c.setTime(date); int day = c.get(Calendar.DAY_OF_WEEK); // day中存的就是星期幾了,其范圍 1~7 // 1=星期日 7=星期六,其他類推 return day + ""; }

/**   
 * 根據一個日期,返回是星期幾
 * 1=星期日 7=星期六,其他類推   
 *    
 * @param sdate   
 * @return   
 */
public static int getWeekByDate(Date date) {

    // 再轉換為時間
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    // day中存的就是星期幾了,其范圍 1~7
    // 1=星期日 7=星期六,其他類推
    return c.get(Calendar.DAY_OF_WEEK);
}


/**
 * 日期為一年中的第幾周
 * @return
 */
public static String getWeekNum(Date date) {

    Calendar c = Calendar.getInstance(Locale.CHINA);
    c.setTime(date);
    String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));

    return week;

}

public static java.sql.Date parseUtilDateToSqlDate(Date date) {

    if (date != null) {
        return new java.sql.Date(date.getTime());
    }
    else {
        return null;
    }
}

public static java.sql.Date parseStringToSqlDate(String dateStr, String format) {

    Date date = null;
    if (StringUtils.isBlank(format)) {
        date = parseStringToDate(dateStr, "yyyy-MM-dd HH:mm:ss");
    }
    else {
        date = parseStringToDate(dateStr, format);
    }

    return parseUtilDateToSqlDate(date);
}

public static Timestamp parseUtilDateToTimestamp(Date date, String format) {

    return parseStringToTimestamp(parseDateToString(date, format), format);
}

public static Date parseTimestampToUtilDate(Timestamp date, String format) {

    return parseStringToDate(parseDateToString(date, format), format);
}

public static Timestamp parseStringToTimestamp(String dateStr, String format) {

    if (StringUtils.isBlank(dateStr)) {
        return null;
    }

    Date date = null;
    if (StringUtils.isBlank(format)) {
        date = parseStringToDate(dateStr, "yyyy-MM-dd HH:mm:ss");
    }
    else {
        date = parseStringToDate(dateStr, format);
    }

    if (date != null) {
        long t = date.getTime();
        return new Timestamp(t);
    }
    else {
        return null;
    }
}

/**
 * 獲取時間2099-12-31,23:59:59
 * 
 * @return
 */
public static Timestamp getMaxTimestamp() {

    return DateUtil.parseStringToTimestamp("2099-12-31 23:59:59", DateUtil.FORMAT7);
}

/**
 * 返回日期中的年月日,格式化成yyyyMMdd
 * @param date
 * @return
 */
public static String getYearMonthDay(Date date) {

    SimpleDateFormat formatter = new SimpleDateFormat(FORMAT12);

    String currentTime = formatter.format(date);

    return currentTime;
}

/**
 * 取得指定月份的第一天
 *
 * @param strdate String
 * @return String
 */
public static String getMonthBegin(String strdate) {

    return parseDateToString(parseStringToDate(strdate, "yyyy-MM"), "");
}

/**
 * 取得指定月份的最后一天
 *
 * @param strdate String
 * @return String
 */
public static String getMonthEnd(String strdate) {

    Date date = parseStringToDate(getMonthBegin(strdate), "");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH, 1);
    calendar.add(Calendar.DAY_OF_YEAR, -1);

    return parseDateToString(calendar.getTime(), "");
}

public static String getPreviousMonthBegin() {

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
    Date date = new Date(cal.getTimeInMillis());

    return parseDateToString(parseStringToDate(parseDateToString(date, FORMAT1), "yyyy-MM"), FORMAT1);
}

public static String getPreviousMonthEnd() {

    Date date = parseStringToDate(getPreviousMonthBegin(), FORMAT1);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH, 1);
    calendar.add(Calendar.DAY_OF_YEAR, -1);

    return parseDateToString(calendar.getTime(), FORMAT1);
}

/**
 * 上個月
 * 
 * @return
 */
public static String getPreviousMonth() {

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 1);
    Date date = new Date(cal.getTimeInMillis());

    return parseDateToString(parseStringToDate(parseDateToString(date, FORMAT1), "yyyy-MM"), FORMAT14);
}

/**
 * 上兩個月
 * 
 * @return
 */
public static String getPreviousTwoMonth() {

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) - 2);
    Date date = new Date(cal.getTimeInMillis());

    return parseDateToString(parseStringToDate(parseDateToString(date, FORMAT1), "yyyy-MM"), FORMAT14);
}

/**
 * 判斷兩個日期是否在同一周
 * @param date1
 * @param date2
 * @return
 */
public static boolean isSameWeekDates(Date date1, Date date2) {

    Calendar cal1 = Calendar.getInstance();
    Calendar cal2 = Calendar.getInstance();
    cal1.setTime(date1);
    cal2.setTime(date2);
    int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR);
    if (0 == subYear) {
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) {
            return true;
        }
    }
    else if ((1 == subYear) && (11 == cal2.get(Calendar.MONTH))) {
        // 如果12月的最后一周橫跨來年第一周的話則最后一周即算做來年的第一周
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) {
            return true;
        }
    }
    else if ((-1 == subYear) && (11 == cal1.get(Calendar.MONTH))) {
        if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) {
            return true;
        }
    }
    return false;
}

public static void main(String[] args) {

    System.out.println(getPreviousMonthBegin());
    System.out.println(getPreviousMonthEnd());
    System.out.println(getYearMonthDay(new Date()));
    System.out.println(getYearMonthDay(parseStringToDate("2009-11-2 12:1:21", FORMAT7)));
    System.out.println("current time: " + getCurrentDateTime());
    System.out.println("addsecond: " + addSecond(getCurrentDateTime(), -1L));
    Date date = new Date();
    System.out.println("current date: " + date.toString());

    System.out.println("test parseDateToString: " + parseDateToString(date, ""));
    System.out.println("test parseStringToDate: " + parseStringToDate("1990-01-1 00:00:00", ""));

    System.out.println("test getYear: " + getYear(date));
    System.out.println("test getMonth: " + getMonth(date));
    System.out.println("test getDay: " + getDay(date));
    System.out.println("test getHour: " + getHour(date));
    System.out.println("test getMinute: " + getMinute(date));
    System.out.println("test getSecond: " + getSecond(date));
    System.out.println("test getMillis: " + getMillis(date));
    System.out.println("test addDate: " + addDay(date, 2));
    System.out.println("test betweenTwoDays: " + betweenTwoDates(date, addDay(date, 2)));
    System.out.println("test getWeekNum: " + getWeekNum(addDay(date, -2)));
    System.out.println("test getWeekByDate: " + getWeekByDate(parseDateToString(date, "")));
    System.out.println("test getMonthBegin: " + getMonthBegin(parseDateToString(date, "")));
    System.out.println("test getMonthEnd: " + getMonthEnd(parseDateToString(date, "")));
    System.out.println("test isSameWeekDates: " + isSameWeekDates(date, addDay(date, -2)));

    System.out.println(getPreviousTwoMonth());
    System.out.println(getPreviousMonth());
    List<Integer> yearList = get2007ToThisYear();
    List<String> monthList = getAllMonth();
}

public static String addOneDay(String stopTime) {
    String finishTime = stopTime;
    Date finishDate = null;
    if(stopTime != null && !"".equals(stopTime))
    {
        if(stopTime.length() < 19)
        {
            finishTime = stopTime.substring(0, 10) + " 00:00:00";
        }
        finishDate = DateUtil.parseStringToDate(finishTime, DateUtil.FORMAT7);
        finishDate = DateUtil.addDay(finishDate, 1);
        return DateUtil.parseDateToString(finishDate, DateUtil.FORMAT7);
    }else{
        return null;
    }
}


/**
 * 給date加1天
 * @param date
 * @return
 */
public static Date addOneDay(Date date) {

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DATE, 1);
    return calendar.getTime();
}

} </pre>

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