亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Java日期工具類DateUtils實例詳解

2024-07-13 10:14:20
字體:
來源:轉載
供稿:網友

在項目開發中,日期是我們必不可少的的一部分,本文將總結代碼開發中的關于日期常用的一些方法,以方便自己后期使用。下面直接上菜了:

package com.example.util;  import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List;  /**  * 日期常用方法  *  * @author  *  */ public class DateUtils {    /**    * 常用變量    */   public static final String DATE_FORMAT_FULL = "yyyy-MM-dd HH:mm:ss";   public static final String DATE_FORMAT_YMD = "yyyy-MM-dd";   public static final String DATE_FORMAT_HMS = "HH:mm:ss";   public static final String DATE_FORMAT_HM = "HH:mm";   public static final String DATE_FORMAT_YMDHM = "yyyy-MM-dd HH:mm";   public static final String DATE_FORMAT_YMDHMS = "yyyyMMddHHmmss";   public static final long ONE_DAY_MILLS = 3600000 * 24;   public static final int WEEK_DAYS = 7;   private static final int dateLength = DATE_FORMAT_YMDHM.length();         /**    * 日期轉換為制定格式字符串    *    * @param time    * @param format    * @return    */   public static String formatDateToString(Date time, String format) {     SimpleDateFormat sdf = new SimpleDateFormat(format);     return sdf.format(time);   }    /**    * 字符串轉換為制定格式日期    * (注意:當你輸入的日期是2014-12-21 12:12,format對應的應為yyyy-MM-dd HH:mm    * 否則異常拋出)    * @param date    * @param format    * @return    * @throws ParseException    *       @    */   public static Date formatStringToDate(String date, String format) {     SimpleDateFormat sdf = new SimpleDateFormat(format);     try {       return sdf.parse(date);     } catch (ParseException ex) {       ex.printStackTrace();       throw new RuntimeException(ex.toString());     }   }    /**    * 判斷一個日期是否屬于兩個時段內    * @param time    * @param timeRange    * @return    */   public static boolean isTimeInRange(Date time, Date[] timeRange) {     return (!time.before(timeRange[0]) && !time.after(timeRange[1]));   }    /**    * 從完整的時間截取精確到分的時間    *    * @param fullDateStr    * @return    */   public static String getDateToMinute(String fullDateStr) {     return fullDateStr == null ? null         : (fullDateStr.length() >= dateLength ? fullDateStr.substring(             0, dateLength) : fullDateStr);   }    /**    * 返回指定年度的所有周。List中包含的是String[2]對象 string[0]本周的開始日期,string[1]是本周的結束日期。    * 日期的格式為YYYY-MM-DD 每年的第一個周,必須包含星期一且是完整的七天。    * 例如:2009年的第一個周開始日期為2009-01-05,結束日期為2009-01-11。 星期一在哪一年,那么包含這個星期的周就是哪一年的周。    * 例如:2008-12-29是星期一,2009-01-04是星期日,哪么這個周就是2008年度的最后一個周。    *    * @param year    *      格式 YYYY ,必須大于1900年度 小于9999年    * @return @    */   public static List<String[]> getWeeksByYear(final int year) {     int weeks = getWeekNumOfYear(year);     List<String[]> result = new ArrayList<String[]>(weeks);     int start = 1;     int end = 7;     for (int i = 1; i <= weeks; i++) {       String[] tempWeek = new String[2];       tempWeek[0] = getDateForDayOfWeek(year, i, start);       tempWeek[1] = getDateForDayOfWeek(year, i, end);       result.add(tempWeek);     }     return result;   }    /**    * 計算指定年、周的上一年、周    *    * @param year    * @param week    * @return @    */   public static int[] getLastYearWeek(int year, int week) {     if (week <= 0) {       throw new IllegalArgumentException("周序號不能小于1!!");     }     int[] result = { week, year };     if (week == 1) {       // 上一年       result[1] -= 1;       // 最后一周       result[0] = getWeekNumOfYear(result[1]);     } else {       result[0] -= 1;     }     return result;   }    /**    * 下一個[周,年]    *    * @param year    * @param week    * @return @    */   public static int[] getNextYearWeek(int year, int week) {     if (week <= 0) {       throw new IllegalArgumentException("周序號不能小于1?。?quot;);     }     int[] result = { week, year };     int weeks = getWeekNumOfYear(year);     if (week == weeks) {       // 下一年       result[1] += 1;       // 第一周       result[0] = 1;     } else {       result[0] += 1;     }     return result;   }    /**    * 計算指定年度共有多少個周。(從周一開始)    *    * @param year    * @return @    */   public static int getWeekNumOfYear(final int year) {     return getWeekNumOfYear(year, Calendar.MONDAY);   }    /**    * 計算指定年度共有多少個周。    *    * @param year    *      yyyy    * @return @    */   public static int getWeekNumOfYear(final int year, int firstDayOfWeek) {     // 每年至少有52個周 ,最多有53個周。     int minWeeks = 52;     int maxWeeks = 53;     int result = minWeeks;     int sIndex = 4;     String date = getDateForDayOfWeek(year, maxWeeks, firstDayOfWeek);     // 判斷年度是否相符,如果相符說明有53個周。     if (date.substring(0, sIndex).equals(year)) {       result = maxWeeks;     }     return result;   }    public static int getWeeksOfWeekYear(final int year) {     Calendar cal = Calendar.getInstance();     cal.setFirstDayOfWeek(Calendar.MONDAY);     cal.setMinimalDaysInFirstWeek(WEEK_DAYS);     cal.set(Calendar.YEAR, year);     return cal.getWeeksInWeekYear();   }    /**    * 獲取指定年份的第幾周的第幾天對應的日期yyyy-MM-dd(從周一開始)    *    * @param year    * @param weekOfYear    * @param dayOfWeek    * @return yyyy-MM-dd 格式的日期 @    */   public static String getDateForDayOfWeek(int year, int weekOfYear,       int dayOfWeek) {     return getDateForDayOfWeek(year, weekOfYear, dayOfWeek, Calendar.MONDAY);   }    /**    * 獲取指定年份的第幾周的第幾天對應的日期yyyy-MM-dd,指定周幾算一周的第一天(firstDayOfWeek)    *    * @param year    * @param weekOfYear    * @param dayOfWeek    * @param firstDayOfWeek    *      指定周幾算一周的第一天    * @return yyyy-MM-dd 格式的日期    */   public static String getDateForDayOfWeek(int year, int weekOfYear,       int dayOfWeek, int firstDayOfWeek) {     Calendar cal = Calendar.getInstance();     cal.setFirstDayOfWeek(firstDayOfWeek);     cal.set(Calendar.DAY_OF_WEEK, dayOfWeek);     cal.setMinimalDaysInFirstWeek(WEEK_DAYS);     cal.set(Calendar.YEAR, year);     cal.set(Calendar.WEEK_OF_YEAR, weekOfYear);     return formatDateToString(cal.getTime(), DATE_FORMAT_YMD);   }    /**    * 獲取指定日期星期幾    *    * @param datetime    * @throws ParseException    *       @    */   public static int getWeekOfDate(String datetime) throws ParseException {     Calendar cal = Calendar.getInstance();     cal.setFirstDayOfWeek(Calendar.MONDAY);     cal.setMinimalDaysInFirstWeek(WEEK_DAYS);     Date date = formatStringToDate(datetime, DATE_FORMAT_YMD);     cal.setTime(date);     return cal.get(Calendar.DAY_OF_WEEK);    }    /**    * 計算某年某周內的所有日期(從周一開始 為每周的第一天)    *    * @param yearNum    * @param weekNum    * @return @    */   public static List<String> getWeekDays(int yearNum, int weekNum) {     return getWeekDays(yearNum, weekNum, Calendar.MONDAY);   }    /**    * 計算某年某周內的所有日期(七天)    *    * @param yearNum    * @param weekNum    * @return yyyy-MM-dd 格式的日期列表    */   public static List<String> getWeekDays(int year, int weekOfYear,       int firstDayOfWeek) {     List<String> dates = new ArrayList<String>();     int dayOfWeek = firstDayOfWeek;     for (int i = 0; i < WEEK_DAYS; i++) {       dates.add(getDateForDayOfWeek(year, weekOfYear, dayOfWeek++,           firstDayOfWeek));     }     return dates;   }    /**    * 獲取目標日期的上周、或本周、或下周的年、周信息    *    * @param queryDate    *      傳入的時間    * @param weekOffset    *      -1:上周 0:本周 1:下周    * @param firstDayOfWeek    *      每周以第幾天為首日    * @return    * @throws ParseException    */   public static int[] getWeekAndYear(String queryDate, int weekOffset,       int firstDayOfWeek) throws ParseException {      Date date = formatStringToDate(queryDate, DATE_FORMAT_YMD);     Calendar calendar = Calendar.getInstance();     calendar.setTime(date);     calendar.setFirstDayOfWeek(firstDayOfWeek);     calendar.setMinimalDaysInFirstWeek(WEEK_DAYS);     int year = calendar.getWeekYear();     int week = calendar.get(Calendar.WEEK_OF_YEAR);     int[] result = { week, year };     switch (weekOffset) {     case 1:       result = getNextYearWeek(year, week);       break;     case -1:       result = getLastYearWeek(year, week);       break;     default:       break;     }     return result;   }    /**    * 計算個兩日期的天數    *    * @param startDate    *      開始日期字串    * @param endDate    *      結束日期字串    * @return    * @throws ParseException    */   public static int getDaysBetween(String startDate, String endDate)       throws ParseException {     int dayGap = 0;     if (startDate != null && startDate.length() > 0 && endDate != null         && endDate.length() > 0) {       Date end = formatStringToDate(endDate, DATE_FORMAT_YMD);       Date start = formatStringToDate(startDate, DATE_FORMAT_YMD);       dayGap = getDaysBetween(start, end);     }     return dayGap;   }    private static int getDaysBetween(Date startDate, Date endDate) {     return (int) ((endDate.getTime() - startDate.getTime()) / ONE_DAY_MILLS);   }    /**    * 計算兩個日期之間的天數差    * @param startDate    * @param endDate    * @return    */   public static int getDaysGapOfDates(Date startDate, Date endDate) {     int date = 0;     if (startDate != null && endDate != null) {       date = getDaysBetween(startDate, endDate);     }     return date;   }    /**    * 計算兩個日期之間的年份差距    *    * @param firstDate    * @param secondDate    * @return    */    public static int getYearGapOfDates(Date firstDate, Date secondDate) {     if (firstDate == null || secondDate == null) {       return 0;     }     Calendar helpCalendar = Calendar.getInstance();     helpCalendar.setTime(firstDate);     int firstYear = helpCalendar.get(Calendar.YEAR);     helpCalendar.setTime(secondDate);     int secondYear = helpCalendar.get(Calendar.YEAR);     return secondYear - firstYear;   }    /**    * 計算兩個日期之間的月份差距    *    * @param firstDate    * @param secondDate    * @return    */   public static int getMonthGapOfDates(Date firstDate, Date secondDate) {     if (firstDate == null || secondDate == null) {       return 0;     }      return (int) ((secondDate.getTime() - firstDate.getTime())         / ONE_DAY_MILLS / 30);    }    /**    * 計算是否包含當前日期    *    * @param datys    * @return    */   public static boolean isContainCurrent(List<String> dates) {     boolean flag = false;     SimpleDateFormat fmt = new SimpleDateFormat(DATE_FORMAT_YMD);     Date date = new Date();     String dateStr = fmt.format(date);     for (int i = 0; i < dates.size(); i++) {       if (dateStr.equals(dates.get(i))) {         flag = true;       }     }     return flag;   }    /**    * 從date開始計算time天后的日期    *    * @param date    * @param time    * @return    * @throws ParseException    */   public static String getCalculateDateToString(String startDate, int time)       throws ParseException {     String resultDate = null;     if (startDate != null && startDate.length() > 0) {       Date date = formatStringToDate(startDate, DATE_FORMAT_YMD);       Calendar c = Calendar.getInstance();       c.setTime(date);       c.set(Calendar.DAY_OF_YEAR, time);       date = c.getTime();       resultDate = formatDateToString(date, DATE_FORMAT_YMD);     }     return resultDate;   }    /**    * 獲取從某日期開始計算,指定的日期所在該年的第幾周    *    * @param date    * @param admitDate    * @return    * @throws ParseException    *       @    */   public static int[] getYearAndWeeks(String date, String admitDate)       throws ParseException {     Calendar c = Calendar.getInstance();     c.setTime(formatStringToDate(admitDate, DATE_FORMAT_YMD));     int time = c.get(Calendar.DAY_OF_WEEK);     return getWeekAndYear(date, 0, time);   }    /**    * 獲取指定日期refDate,前或后一周的所有日期    *    * @param refDate    *      參考日期    * @param weekOffset    *      -1:上周 0:本周 1:下周    * @param startDate    *      哪天算一周的第一天    * @return yyyy-MM-dd 格式的日期    * @throws ParseException    *       @    */   public static List<String> getWeekDaysAroundDate(String refDate,       int weekOffset, String startDate) throws ParseException {     // 以startDate為一周的第一天     Calendar c = Calendar.getInstance();     c.setTime(formatStringToDate(startDate, DATE_FORMAT_YMD));     int firstDayOfWeek = c.get(Calendar.DAY_OF_WEEK);     // 獲取相應周     int[] weekAndYear = getWeekAndYear(refDate, weekOffset, firstDayOfWeek);     // 獲取相應周的所有日期     return getWeekDays(weekAndYear[1], weekAndYear[0], firstDayOfWeek);   }    /**    * 根據時間點獲取時間區間    *    * @param hours    * @return    */   public static List<String[]> getTimePointsByHour(int[] hours) {     List<String[]> hourPoints = new ArrayList<String[]>();     String sbStart = ":00:00";     String sbEnd = ":59:59";     for (int i = 0; i < hours.length; i++) {       String[] times = new String[2];       times[0] = hours[i] + sbStart;       times[1] = (hours[(i + 1 + hours.length) % hours.length] - 1)           + sbEnd;       hourPoints.add(times);     }     return hourPoints;   }    /**    *    * 根據指定的日期,增加或者減少天數    *    * @param date    * @param amount    * @return    */   public static Date addDays(Date date, int amount) {     return add(date, Calendar.DAY_OF_MONTH, amount);   }    /**    * 根據指定的日期,類型,增加或減少數量    *    * @param date    * @param calendarField    * @param amount    * @return    */   public static Date add(Date date, int calendarField, int amount) {     if (date == null) {       throw new IllegalArgumentException("The date must not be null");     }     Calendar c = Calendar.getInstance();     c.setTime(date);     c.add(calendarField, amount);     return c.getTime();   }    /**    * 獲取當前日期的最大日期 時間2014-12-21 23:59:59    * @return    */   public static Date getCurDateWithMaxTime() {     Calendar c = Calendar.getInstance();     c.set(Calendar.HOUR_OF_DAY, 23);     c.set(Calendar.MINUTE, 59);     c.set(Calendar.SECOND, 59);     return c.getTime();   }    /**    * 獲取當前日期的最小日期時間 2014-12-21 00:00:00    * @return    */   public static Date getCurDateWithMinTime() {     Calendar c = Calendar.getInstance();     c.set(Calendar.HOUR_OF_DAY, 0);     c.set(Calendar.MINUTE, 0);     c.set(Calendar.SECOND, 0);     c.set(Calendar.MILLISECOND, 0);     return c.getTime();   }  } 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
www.久久色.com| 91久久国产精品91久久性色| 久久人91精品久久久久久不卡| 成人免费午夜电影| 亚洲一区二区三区成人在线视频精品| 日本精品va在线观看| 久久久成人的性感天堂| 91影视免费在线观看| 亚洲第五色综合网| 2021久久精品国产99国产精品| 91精品国产综合久久香蕉922| 日本人成精品视频在线| 欧美综合激情网| 在线视频亚洲欧美| 在线观看国产精品日韩av| 欧美—级高清免费播放| 成人精品久久久| 91中文精品字幕在线视频| 这里只有精品视频在线| 成人亚洲欧美一区二区三区| 国产精品美女视频网站| 久久精品中文字幕一区| 亚洲欧美日韩精品久久| 欧美性一区二区三区| 91精品国产高清久久久久久久久| 日韩大胆人体377p| 日韩精品久久久久久久玫瑰园| 国产成人在线视频| 欧美影院成年免费版| 亚洲欧美变态国产另类| 永久免费精品影视网站| 久久精品国产综合| 黑人欧美xxxx| 国产精品一区二区在线| 国产精品大陆在线观看| 国产午夜精品久久久| 国产精品爽爽爽爽爽爽在线观看| 91夜夜揉人人捏人人添红杏| 欧美丝袜一区二区| 国产精品成人一区| 4p变态网欧美系列| 久久久精品2019中文字幕神马| 日本不卡免费高清视频| 在线观看中文字幕亚洲| 国产精品偷伦视频免费观看国产| 97国产精品人人爽人人做| 96精品久久久久中文字幕| 日韩免费观看视频| 久久精品91久久香蕉加勒比| zzijzzij亚洲日本成熟少妇| 91精品久久久久久久久久久| 国产成人欧美在线观看| 亚洲成人中文字幕| 狠狠操狠狠色综合网| 97国产真实伦对白精彩视频8| 国产91网红主播在线观看| 欧美日韩一区二区免费在线观看| 欧美巨乳在线观看| 亚洲va电影大全| 日韩av大片免费看| 欧美一级电影久久| 日本亚洲欧洲色α| 日韩麻豆第一页| 91久久精品国产91久久| 欧美性极品xxxx娇小| 国产丝袜精品视频| 久久中文精品视频| 国产视频在线一区二区| 色av中文字幕一区| 日韩电视剧在线观看免费网站| …久久精品99久久香蕉国产| 成人网在线免费看| 欧美成人精品在线| 国产精自产拍久久久久久蜜| 国产日韩欧美电影在线观看| 欧美精品激情blacked18| 久久久久久国产三级电影| 精品无人区乱码1区2区3区在线| 国产精品吴梦梦| 成人在线激情视频| 日韩av影视综合网| 亚洲午夜精品视频| 色天天综合狠狠色| 日韩在线免费视频| 久久精品中文字幕免费mv| 久久久久久午夜| 91色精品视频在线| 欧美极品少妇全裸体| 一区二区三区四区在线观看视频| 欧美性猛交xxxx乱大交蜜桃| 国产精品久久久久久av| 国产女人18毛片水18精品| 国产精品高潮粉嫩av| 色综合亚洲精品激情狠狠| 丰满岳妇乱一区二区三区| 成人在线免费观看视视频| 夜夜嗨av一区二区三区四区| 欧美一区亚洲一区| 亚洲一区二区精品| 国色天香2019中文字幕在线观看| 色yeye香蕉凹凸一区二区av| 久久6精品影院| 国产亚洲精品美女久久久久| 日韩精品免费在线视频观看| 九九热最新视频//这里只有精品| 国产精品成人一区| 日本精品视频在线| 91情侣偷在线精品国产| 一区二区三区 在线观看视| 日韩一区二区欧美| 国产在线观看91精品一区| 欧美成人剧情片在线观看| 亚洲精品有码在线| 亚洲国产日韩欧美在线动漫| 亚洲中国色老太| 日韩欧美第一页| 欧美一级视频在线观看| 播播国产欧美激情| 国产精品视频免费在线观看| 色噜噜久久综合伊人一本| 日本精品免费一区二区三区| 高跟丝袜欧美一区| 色偷偷88888欧美精品久久久| 一级做a爰片久久毛片美女图片| 亚洲自拍偷拍在线| 成人激情黄色网| 欧美电影电视剧在线观看| 亚洲免费成人av电影| 亚洲国产高潮在线观看| 欧美在线视频免费| 欧美国产日韩xxxxx| 欧美日韩一区二区三区| 久久久久亚洲精品成人网小说| 韩国精品久久久999| 欧美激情一区二区三区久久久| 久久久久久久影视| yellow中文字幕久久| 久久成人在线视频| 国产成人高潮免费观看精品| 欧美极品第一页| 国外成人在线视频| 国产精品久久久久不卡| 插插插亚洲综合网| 亚洲高清久久久久久| 欧美高清自拍一区| 欧美特黄级在线| 欧美午夜精品久久久久久人妖| 亚洲成人精品视频在线观看| 亚洲人成77777在线观看网| 久久国产天堂福利天堂| 国产999在线观看| 亚洲国产精品久久久久| 欧美日韩国产一区中文午夜| 青草青草久热精品视频在线网站| 久久久国产精品亚洲一区| 亚洲欧美www| 神马久久久久久| 国产精品久久久久av| 88国产精品欧美一区二区三区| 欧美激情一级欧美精品| 九九热精品视频国产| 久久成人精品电影| 国产一区香蕉久久| 亚洲欧美成人在线|