zoukankan      html  css  js  c++  java
  • 时间操作定义类

       1 package com.zhouyy.netBank.util;
       2 
       3 import org.springframework.util.StringUtils;
       4 
       5 import java.beans.PropertyEditorSupport;
       6 import java.sql.Timestamp;
       7 import java.text.DateFormat;
       8 import java.text.ParseException;
       9 import java.text.SimpleDateFormat;
      10 import java.util.*;
      11 
      12 /**
      13  * 类描述:时间操作定义类
      14  *
      15  */
      16 public class DateUtils extends PropertyEditorSupport {
      17     // 各种时间格式
      18     public static final SimpleDateFormat date_sdf = new SimpleDateFormat("yyyy-MM-dd");
      19     // 各种时间格式
      20     public static final SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");
      21     // 各种时间格式
      22     public static final SimpleDateFormat date_sdf_wz = new SimpleDateFormat("yyyy年MM月dd日");
      23     public static final SimpleDateFormat time_sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
      24     public static final SimpleDateFormat yyyymmddhhmmss = new SimpleDateFormat("yyyyMMddHHmmss");
      25     public static final SimpleDateFormat short_time_sdf = new SimpleDateFormat("HH:mm");
      26     public static final SimpleDateFormat datetimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      27     // 以毫秒表示的时间
      28     private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
      29     private static final long HOUR_IN_MILLIS = 3600 * 1000;
      30     private static final long MINUTE_IN_MILLIS = 60 * 1000;
      31     private static final long SECOND_IN_MILLIS = 1000;
      32 
      33     // Grace style
      34 //    public static final String PATTERN_GRACE = "yyyy/MM/dd HH:mm:ss";
      35 //    public static final String PATTERN_GRACE_NORMAL = "yyyy/MM/dd HH:mm";
      36 //    public static final String PATTERN_GRACE_SIMPLE = "yyyy/MM/dd";
      37 
      38     // Classical style
      39     public static final String PATTERN_CLASSICAL = "yyyy-MM-dd HH:mm:ss";
      40     public static final String PATTERN_CLASSICAL_NORMAL = "yyyy-MM-dd HH:mm";
      41     public static final String PATTERN_CLASSICAL_SIMPLE = "yyyy-MM-dd";
      42 
      43     //CH style
      44     public static final String PATTERN_CH = "yyyy年MM月dd日 HH时mm分ss秒";
      45     public static final String PATTERN_CH_NORMAL = "yyyy年MM月dd日 HH时mm分";
      46     public static final String PATTERN_CH_SIMPLE = "yyyy年MM月dd日";
      47 
      48     // 指定模式的时间格式
      49     private static SimpleDateFormat getSDFormat(String pattern) {
      50         return new SimpleDateFormat(pattern);
      51     }
      52 
      53     /**
      54      * 当前日历,这里用中国时间表示
      55      *
      56      * @return 以当地时区表示的系统当前日历
      57      */
      58     public static Calendar getCalendar() {
      59         return Calendar.getInstance();
      60     }
      61 
      62     /**
      63      * 指定毫秒数表示的日历
      64      *
      65      * @param millis 毫秒数
      66      * @return 指定毫秒数表示的日历
      67      */
      68     public static Calendar getCalendar(long millis) {
      69         Calendar cal = Calendar.getInstance();
      70         cal.setTime(new Date(millis));
      71         return cal;
      72     }
      73 
      74     // ////////////////////////////////////////////////////////////////////////////
      75     // getDate
      76     // 各种方式获取的Date
      77     // ////////////////////////////////////////////////////////////////////////////
      78 
      79     /**
      80      * 当前日期
      81      *
      82      * @return 系统当前时间
      83      */
      84     public static Date getDate() {
      85         return new Date();
      86     }
      87 
      88     /**
      89      * 当前日期 不带时分秒
      90      *
      91      * @return 系统当前时间
      92      */
      93     public static Date getDateYMD() {
      94         return DateUtils.str2Date(DateUtils.date2Str(DateUtils.yyyyMMdd), DateUtils.yyyyMMdd);
      95     }
      96 
      97     /**
      98      * 获取日期 不带时分秒
      99      *
     100      * @return 系统当前时间
     101      */
     102     public static Date getDateYMD(Date date) {
     103         return DateUtils.str2Date(DateUtils.date2Str(date, DateUtils.yyyyMMdd), DateUtils.yyyyMMdd);
     104     }
     105 
     106     /**
     107      * 指定毫秒数表示的日期
     108      *
     109      * @param millis 毫秒数
     110      * @return 指定毫秒数表示的日期
     111      */
     112     public static Date getDate(long millis) {
     113         return new Date(millis);
     114     }
     115 
     116     /**
     117      * 时间戳转换为字符串
     118      *
     119      * @param time
     120      * @return
     121      */
     122     public static String timestamptoStr(Timestamp time) {
     123         Date date = null;
     124         if (null != time) {
     125             date = new Date(time.getTime());
     126         }
     127         return date2Str(date_sdf);
     128     }
     129 
     130     /**
     131      * 字符串转换时间戳
     132      *
     133      * @param str
     134      * @return
     135      */
     136     public static Timestamp str2Timestamp(String str) {
     137         Date date = str2Date(str, date_sdf);
     138         return new Timestamp(date.getTime());
     139     }
     140 
     141     /**
     142      * 字符串转换成日期
     143      *
     144      * @param str
     145      * @param sdf
     146      * @return
     147      */
     148     public static Date str2Date(String str, SimpleDateFormat sdf) {
     149         if (null == str || "".equals(str)) {
     150             return null;
     151         }
     152         Date date = null;
     153         try {
     154             date = sdf.parse(str);
     155             return date;
     156         } catch (ParseException e) {
     157             e.printStackTrace();
     158         }
     159         return null;
     160     }
     161 
     162     /**
     163      * 日期转换为字符串
     164      *
     165      * @param date   日期
     166      * @param format 日期格式
     167      * @return 字符串
     168      */
     169     public static String date2Str(SimpleDateFormat date_sdf) {
     170         Date date = getDate();
     171         if (null == date) {
     172             return null;
     173         }
     174         return date_sdf.format(date);
     175     }
     176 
     177     /**
     178      * 格式化时间
     179      *
     180      * @param date
     181      * @param format
     182      * @return
     183      */
     184     public static String dateformat(String date, String format) {
     185         SimpleDateFormat sformat = new SimpleDateFormat(format);
     186         Date _date = null;
     187         try {
     188             _date = sformat.parse(date);
     189         } catch (ParseException e) {
     190             // TODO Auto-generated catch block
     191             e.printStackTrace();
     192         }
     193         return sformat.format(_date);
     194     }
     195     
     196     /**
     197      * 日期转换为字符串
     198      *
     199      * @param date   日期
     200      * @param format 日期格式
     201      * @return 字符串
     202      */
     203     public static String date2StrCNY(Date date) {
     204         if (null == date) {
     205             return null;
     206         }
     207         return date2Str(date,date_sdf_wz);
     208     }
     209 
     210     /**
     211      * 日期转换为字符串
     212      *
     213      * @param date   日期
     214      * @param format 日期格式
     215      * @return 字符串
     216      */
     217     public static String date2Str(Date date, SimpleDateFormat date_sdf) {
     218         if (null == date) {
     219             return null;
     220         }
     221         return date_sdf.format(date);
     222     }
     223 
     224     /**
     225      * 日期转换为字符串
     226      *
     227      * @param date   日期
     228      * @param format 日期格式
     229      * @return 字符串
     230      */
     231     public static String getDate(String format) {
     232         Date date = new Date();
     233         if (null == date) {
     234             return null;
     235         }
     236         SimpleDateFormat sdf = new SimpleDateFormat(format);
     237         return sdf.format(date);
     238     }
     239 
     240     /**
     241      * 指定毫秒数的时间戳
     242      *
     243      * @param millis 毫秒数
     244      * @return 指定毫秒数的时间戳
     245      */
     246     public static Timestamp getTimestamp(long millis) {
     247         return new Timestamp(millis);
     248     }
     249 
     250     /**
     251      * 以字符形式表示的时间戳
     252      *
     253      * @param time 毫秒数
     254      * @return 以字符形式表示的时间戳
     255      */
     256     public static Timestamp getTimestamp(String time) {
     257         return new Timestamp(Long.parseLong(time));
     258     }
     259 
     260     /**
     261      * 系统当前的时间戳
     262      *
     263      * @return 系统当前的时间戳
     264      */
     265     public static Timestamp getTimestamp() {
     266         return new Timestamp(new Date().getTime());
     267     }
     268 
     269     /**
     270      * 指定日期的时间戳
     271      *
     272      * @param date 指定日期
     273      * @return 指定日期的时间戳
     274      */
     275     public static Timestamp getTimestamp(Date date) {
     276         return new Timestamp(date.getTime());
     277     }
     278 
     279     /**
     280      * 指定日历的时间戳
     281      *
     282      * @param cal 指定日历
     283      * @return 指定日历的时间戳
     284      */
     285     public static Timestamp getCalendarTimestamp(Calendar cal) {
     286         return new Timestamp(cal.getTime().getTime());
     287     }
     288 
     289     public static Timestamp gettimestamp() {
     290         Date dt = new Date();
     291         DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     292         String nowTime = df.format(dt);
     293         java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
     294         return buydate;
     295     }
     296 
     297     // ////////////////////////////////////////////////////////////////////////////
     298     // getMillis
     299     // 各种方式获取的Millis
     300     // ////////////////////////////////////////////////////////////////////////////
     301 
     302     /**
     303      * 系统时间的毫秒数
     304      *
     305      * @return 系统时间的毫秒数
     306      */
     307     public static long getMillis() {
     308         return new Date().getTime();
     309     }
     310 
     311     /**
     312      * 指定日历的毫秒数
     313      *
     314      * @param cal 指定日历
     315      * @return 指定日历的毫秒数
     316      */
     317     public static long getMillis(Calendar cal) {
     318         return cal.getTime().getTime();
     319     }
     320 
     321     /**
     322      * 指定日期的毫秒数
     323      *
     324      * @param date 指定日期
     325      * @return 指定日期的毫秒数
     326      */
     327     public static long getMillis(Date date) {
     328         return date.getTime();
     329     }
     330 
     331     /**
     332      * 指定时间戳的毫秒数
     333      *
     334      * @param ts 指定时间戳
     335      * @return 指定时间戳的毫秒数
     336      */
     337     public static long getMillis(Timestamp ts) {
     338         return ts.getTime();
     339     }
     340 
     341     // ////////////////////////////////////////////////////////////////////////////
     342     // formatDate
     343     // 将日期按照一定的格式转化为字符串
     344     // ////////////////////////////////////////////////////////////////////////////
     345 
     346     /**
     347      * 默认方式表示的系统当前日期,具体格式:年-月-日
     348      *
     349      * @return 默认日期按“年-月-日“格式显示
     350      */
     351     public static String formatDate() {
     352         return date_sdf.format(getCalendar().getTime());
     353     }
     354 
     355     /**
     356      * 默认方式表示的系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss
     357      *
     358      * @return 默认日期按“yyyy-MM-dd HH:mm:ss“格式显示
     359      */
     360     public static String formatDateTime() {
     361         return datetimeFormat.format(getCalendar().getTime());
     362     }
     363 
     364     /**
     365      * 获取时间字符串
     366      */
     367     public static String getDataString(SimpleDateFormat formatstr) {
     368         return formatstr.format(getCalendar().getTime());
     369     }
     370 
     371     /**
     372      * 指定日期的默认显示,具体格式:年-月-日
     373      *
     374      * @param cal 指定的日期
     375      * @return 指定日期按“年-月-日“格式显示
     376      */
     377     public static String formatDate(Calendar cal) {
     378         return date_sdf.format(cal.getTime());
     379     }
     380 
     381     /**
     382      * 指定日期的默认显示,具体格式:年-月-日
     383      *
     384      * @param date 指定的日期
     385      * @return 指定日期按“年-月-日“格式显示
     386      */
     387     public static String formatDate(Date date) {
     388         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
     389         return sdf.format(date);
     390     }
     391 
     392     /**
     393      * 指定毫秒数表示日期的默认显示,具体格式:年-月-日
     394      *
     395      * @param millis 指定的毫秒数
     396      * @return 指定毫秒数表示日期按“年-月-日“格式显示
     397      */
     398     public static String formatDate(long millis) {
     399         return date_sdf.format(new Date(millis));
     400     }
     401 
     402     /**
     403      * 默认日期按指定格式显示
     404      *
     405      * @param pattern 指定的格式
     406      * @return 默认日期按指定格式显示
     407      */
     408     public static String formatDate(String pattern) {
     409         return getSDFormat(pattern).format(getCalendar().getTime());
     410     }
     411 
     412     /**
     413      * 指定日期按指定格式显示
     414      *
     415      * @param cal     指定的日期
     416      * @param pattern 指定的格式
     417      * @return 指定日期按指定格式显示
     418      */
     419     public static String formatDate(Calendar cal, String pattern) {
     420         return getSDFormat(pattern).format(cal.getTime());
     421     }
     422 
     423     /**
     424      * 指定日期按指定格式显示
     425      *
     426      * @param date    指定的日期
     427      * @param pattern 指定的格式
     428      * @return 指定日期按指定格式显示
     429      */
     430     public static String formatDate(Date date, String pattern) {
     431         return getSDFormat(pattern).format(date);
     432     }
     433 
     434     // ////////////////////////////////////////////////////////////////////////////
     435     // formatTime
     436     // 将日期按照一定的格式转化为字符串
     437     // ////////////////////////////////////////////////////////////////////////////
     438 
     439     /**
     440      * 默认方式表示的系统当前日期,具体格式:年-月-日 时:分
     441      *
     442      * @return 默认日期按“年-月-日 时:分“格式显示
     443      */
     444     public static String formatTime() {
     445         return time_sdf.format(getCalendar().getTime());
     446     }
     447 
     448     /**
     449      * 指定毫秒数表示日期的默认显示,具体格式:年-月-日 时:分
     450      *
     451      * @param millis 指定的毫秒数
     452      * @return 指定毫秒数表示日期按“年-月-日 时:分“格式显示
     453      */
     454     public static String formatTime(long millis) {
     455         return time_sdf.format(new Date(millis));
     456     }
     457 
     458     /**
     459      * 指定日期的默认显示,具体格式:年-月-日 时:分
     460      *
     461      * @param cal 指定的日期
     462      * @return 指定日期按“年-月-日 时:分“格式显示
     463      */
     464     public static String formatTime(Calendar cal) {
     465         return time_sdf.format(cal.getTime());
     466     }
     467 
     468     /**
     469      * 指定日期的默认显示,具体格式:年-月-日 时:分
     470      *
     471      * @param date 指定的日期
     472      * @return 指定日期按“年-月-日 时:分“格式显示
     473      */
     474     public static String formatTime(Date date) {
     475         return time_sdf.format(date);
     476     }
     477 
     478     // ////////////////////////////////////////////////////////////////////////////
     479     // formatShortTime
     480     // 将日期按照一定的格式转化为字符串
     481     // ////////////////////////////////////////////////////////////////////////////
     482 
     483     /**
     484      * 默认方式表示的系统当前日期,具体格式:时:分
     485      *
     486      * @return 默认日期按“时:分“格式显示
     487      */
     488     public static String formatShortTime() {
     489         return short_time_sdf.format(getCalendar().getTime());
     490     }
     491 
     492     /**
     493      * 指定毫秒数表示日期的默认显示,具体格式:时:分
     494      *
     495      * @param millis 指定的毫秒数
     496      * @return 指定毫秒数表示日期按“时:分“格式显示
     497      */
     498     public static String formatShortTime(long millis) {
     499         return short_time_sdf.format(new Date(millis));
     500     }
     501 
     502     /**
     503      * 指定日期的默认显示,具体格式:时:分
     504      *
     505      * @param cal 指定的日期
     506      * @return 指定日期按“时:分“格式显示
     507      */
     508     public static String formatShortTime(Calendar cal) {
     509         return short_time_sdf.format(cal.getTime());
     510     }
     511 
     512     /**
     513      * 指定日期的默认显示,具体格式:时:分
     514      *
     515      * @param date 指定的日期
     516      * @return 指定日期按“时:分“格式显示
     517      */
     518     public static String formatShortTime(Date date) {
     519         return short_time_sdf.format(date);
     520     }
     521 
     522     // ////////////////////////////////////////////////////////////////////////////
     523     // parseDate
     524     // parseCalendar
     525     // parseTimestamp
     526     // 将字符串按照一定的格式转化为日期或时间
     527     // ////////////////////////////////////////////////////////////////////////////
     528 
     529     /**
     530      * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
     531      *
     532      * @param src     将要转换的原始字符窜
     533      * @param pattern 转换的匹配格式
     534      * @return 如果转换成功则返回转换后的日期
     535      * @throws ParseException
     536      * @throws AIDateFormatException
     537      */
     538     public static Date parseDate(String src, String pattern)
     539             throws ParseException {
     540         return getSDFormat(pattern).parse(src);
     541 
     542     }
     543 
     544     /**
     545      * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
     546      *
     547      * @param src     将要转换的原始字符窜
     548      * @param pattern 转换的匹配格式
     549      * @return 如果转换成功则返回转换后的日期
     550      * @throws ParseException
     551      * @throws AIDateFormatException
     552      */
     553     public static Calendar parseCalendar(String src, String pattern)
     554             throws ParseException {
     555 
     556         Date date = parseDate(src, pattern);
     557         Calendar cal = Calendar.getInstance();
     558         cal.setTime(date);
     559         return cal;
     560     }
     561 
     562     public static String formatAddDate(String src, String pattern, int amount)
     563             throws ParseException {
     564         Calendar cal;
     565         cal = parseCalendar(src, pattern);
     566         cal.add(Calendar.DATE, amount);
     567         return formatDate(cal);
     568     }
     569 
     570     /**
     571      * 根据指定的格式将字符串转换成Date 如输入:2003-11-19 11:20:20将按照这个转成时间
     572      *
     573      * @param src     将要转换的原始字符窜
     574      * @param pattern 转换的匹配格式
     575      * @return 如果转换成功则返回转换后的时间戳
     576      * @throws ParseException
     577      * @throws AIDateFormatException
     578      */
     579     public static Timestamp parseTimestamp(String src, String pattern)
     580             throws ParseException {
     581         Date date = parseDate(src, pattern);
     582         return new Timestamp(date.getTime());
     583     }
     584 
     585     // ////////////////////////////////////////////////////////////////////////////
     586     // dateDiff
     587     // 计算两个日期之间的差值
     588     // ////////////////////////////////////////////////////////////////////////////
     589 
     590     /**
     591      * 计算两个时间之间的差值,根据标志的不同而不同
     592      *
     593      * @param flag   计算标志,表示按照年/月/日/时/分/秒等计算
     594      * @param calSrc 减数
     595      * @param calDes 被减数
     596      * @return 两个日期之间的差值
     597      */
     598     public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
     599 
     600         long millisDiff = getMillis(calSrc) - getMillis(calDes);
     601 
     602         if (flag == 'y') {
     603             return (calSrc.get(calSrc.YEAR) - calDes.get(calDes.YEAR));
     604         }
     605 
     606         if (flag == 'M') {
     607             return (calSrc.get(calSrc.MONTH) +
     608                     ( (calSrc.get(calSrc.YEAR) - calDes.get(calDes.YEAR))*12 ) - calDes.get(calDes.MONTH));
     609         }
     610 
     611         if (flag == 'd') {
     612             return (int) (millisDiff / DAY_IN_MILLIS);
     613         }
     614 
     615         if (flag == 'h') {
     616             return (int) (millisDiff / HOUR_IN_MILLIS);
     617         }
     618 
     619         if (flag == 'm') {
     620             return (int) (millisDiff / MINUTE_IN_MILLIS);
     621         }
     622 
     623         if (flag == 's') {
     624             return (int) (millisDiff / SECOND_IN_MILLIS);
     625         }
     626 
     627         return 0;
     628     }
     629 
     630     /**
     631      * String类型 转换为Date,
     632      * 如果参数长度为10 转换格式”yyyy-MM-dd“
     633      * 如果参数长度为19 转换格式”yyyy-MM-dd HH:mm:ss“
     634      * * @param text
     635      * String类型的时间值
     636      */
     637     public void setAsText(String text) throws IllegalArgumentException {
     638         if (StringUtils.hasText(text)) {
     639             try {
     640                 if (text.indexOf(":") == -1 && text.length() == 10) {
     641                     setValue(this.date_sdf.parse(text));
     642                 } else if (text.indexOf(":") > 0 && text.length() == 19) {
     643                     setValue(this.datetimeFormat.parse(text));
     644                 } else {
     645                     throw new IllegalArgumentException(
     646                             "Could not parse date, date format is error ");
     647                 }
     648             } catch (ParseException ex) {
     649                 IllegalArgumentException iae = new IllegalArgumentException(
     650                         "Could not parse date: " + ex.getMessage());
     651                 iae.initCause(ex);
     652                 throw iae;
     653             }
     654         } else {
     655             setValue(null);
     656         }
     657     }
     658 
     659     public static int getYear() {
     660         GregorianCalendar calendar = new GregorianCalendar();
     661         calendar.setTime(getDate());
     662         return calendar.get(Calendar.YEAR);
     663     }
     664 
     665     public static String getAfterMonth(int month, int day) {
     666         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
     667         GregorianCalendar calendar = new GregorianCalendar();
     668         calendar.add(2, month);
     669         calendar.add(5, day);
     670         String date = format.format(calendar.getTime());
     671         return date;
     672     }
     673 
     674     public static String getAfterDate(int day) {
     675         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
     676         GregorianCalendar calendar = new GregorianCalendar();
     677         calendar.add(5, day);
     678         String date = format.format(calendar.getTime());
     679         return date;
     680     }
     681 
     682     public static String getAfterMinute(int minute) {
     683         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     684         GregorianCalendar calendar = new GregorianCalendar();
     685         calendar.add(12, minute);
     686         String date = format.format(calendar.getTime());
     687         return date;
     688     }
     689 
     690     public static String getAfterSecond(int second) {
     691         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     692         GregorianCalendar calendar = new GregorianCalendar();
     693         calendar.add(13, second);
     694         String date = format.format(calendar.getTime());
     695         return date;
     696     }
     697 
     698 
     699     public static String getDateStr(Date date, String Pattern) {
     700         SimpleDateFormat formatter = new SimpleDateFormat(Pattern);
     701         return formatter.format(date);
     702     }
     703 
     704 
     705     /**
     706      * 日期的增加天数
     707      *
     708      * @param date   日期
     709      * @param addDay 增加的天数,正数表示增加,负数表示减少
     710      * @return Date 日期的增加月数后的结果
     711      */
     712     public static Date addDay(Date date, int addDay) {
     713         Calendar calendar = Calendar.getInstance();
     714         calendar.setTime(date);
     715         calendar.add(Calendar.DAY_OF_MONTH, addDay);
     716         return new Date(calendar.getTime().getTime());
     717     }
     718 
     719     /**
     720      * 将datetime转换为date类型
     721      *
     722      * @param date
     723      * @return
     724      * @author zuoy 2017-09-15
     725      */
     726     public static Date parseDate(Date date){
     727         return parse(DateUtils.date2Str(date, DateUtils.date_sdf), "yyyy-MM-dd");
     728     }
     729 
     730     /**
     731      * 静态方法 根据两个日期求相差天数 正数表示d1大于d2天数 负数表示d1小于d2天数
     732      * add 7.30
     733      *
     734      * @author zdl
     735      */
     736     public static int dayDiffs(Date d1, Date d2) {
     737         if (d1 == null || d2 == null) {
     738             return 0;
     739         }
     740         long tt = d1.getTime() - d2.getTime();
     741         int days = (int) (tt / (24 * 60 * 60 * 1000));
     742         return days;
     743 
     744     }
     745 
     746     /**
     747      * 验证日期是否是周末
     748      */
     749     public static boolean checkHoliday(Date date) {
     750         Calendar ca = Calendar.getInstance();
     751         ca.setTime(date);
     752         //判断日期是否是周六周日
     753         if (ca.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY || ca.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
     754             return true;
     755         }
     756         return false;
     757     }
     758 
     759     /**
     760      * 验证日期是否是周末
     761      */
     762     public static int getDay(Date date) {
     763         Calendar ca = Calendar.getInstance();
     764         ca.setTime(date);
     765         return ca.get(Calendar.DAY_OF_MONTH);
     766     }
     767 
     768     /***********2017年10月24日 byzhouyy新增以下代码***********/
     769 
     770     /**
     771      * 根据默认格式将指定字符串解析成日期
     772      *
     773      * @param str 指定字符串
     774      * @return 返回解析后的日期
     775      */
     776     public static Date parse(String str) {
     777         return parse(str, PATTERN_CLASSICAL);
     778     }
     779 
     780     /**
     781      * 根据指定格式将指定字符串解析成日期
     782      *
     783      * @param str     指定日期
     784      * @param pattern 指定格式
     785      * @return 返回解析后的日期
     786      */
     787     public static Date parse(String str, String pattern) {
     788         SimpleDateFormat sdf = new SimpleDateFormat(pattern);
     789         try {
     790             return sdf.parse(str);
     791         } catch (Exception e) {
     792             e.printStackTrace();
     793         }
     794         return null;
     795     }
     796 
     797     /**
     798      * 根据默认格式将日期转格式化成字符串
     799      *
     800      * @param date 指定日期
     801      * @return 返回格式化后的字符串
     802      */
     803     public static String format(Date date) {
     804         return format(date, PATTERN_CLASSICAL);
     805     }
     806 
     807     /**
     808      * 根据指定格式将指定日期格式化成字符串
     809      *
     810      * @param date    指定日期
     811      * @param pattern 指定格式
     812      * @return 返回格式化后的字符串
     813      */
     814     public static String format(Date date, String pattern) {
     815         SimpleDateFormat sdf = new SimpleDateFormat(pattern);
     816         return sdf.format(date);
     817     }
     818 
     819     /**
     820      * 获取时间date1与date2相差的秒数
     821      *
     822      * @param date1 起始时间
     823      * @param date2 结束时间
     824      * @return 返回相差的秒数
     825      */
     826     public static int getOffsetSeconds(Date date1, Date date2) {
     827         int seconds = (int) ((date2.getTime() - date1.getTime()) / 1000);
     828         return seconds;
     829     }
     830 
     831     /**
     832      * 获取时间date1与date2相差的分钟数
     833      *
     834      * @param date1 起始时间
     835      * @param date2 结束时间
     836      * @return 返回相差的分钟数
     837      */
     838     public static int getOffsetMinutes(Date date1, Date date2) {
     839         return getOffsetSeconds(date1, date2) / 60;
     840     }
     841 
     842     /**
     843      * 获取时间date1与date2相差的小时数
     844      *
     845      * @param date1 起始时间
     846      * @param date2 结束时间
     847      * @return 返回相差的小时数
     848      */
     849     public static int getOffsetHours(Date date1, Date date2) {
     850         return getOffsetMinutes(date1, date2) / 60;
     851     }
     852 
     853     /**
     854      * 获取时间date1与date2相差的天数数
     855      *
     856      * @param date1 起始时间
     857      * @param date2 结束时间
     858      * @return 返回相差的天数
     859      */
     860     public static int getOffsetDays(Date date1, Date date2) {
     861         return getOffsetHours(date1, date2) / 24;
     862     }
     863 
     864     /**
     865      * 获取时间date1与date2相差的周数
     866      *
     867      * @param date1 起始时间
     868      * @param date2 结束时间
     869      * @return 返回相差的周数
     870      */
     871     public static int getOffsetWeeks(Date date1, Date date2) {
     872         return getOffsetDays(date1, date2) / 7;
     873     }
     874 
     875     /**
     876      * 获取重置指定日期的时分秒后的时间
     877      *
     878      * @param date   指定日期
     879      * @param hour   指定小时
     880      * @param minute 指定分钟
     881      * @param second 指定秒
     882      * @return 返回重置时分秒后的时间
     883      */
     884     public static Date getResetTime(Date date, int hour, int minute, int second) {
     885         Calendar cal = Calendar.getInstance();
     886         if (date != null) {
     887             cal.setTime(date);
     888         }
     889         cal.set(Calendar.HOUR_OF_DAY, hour);
     890         cal.set(Calendar.SECOND, minute);
     891         cal.set(Calendar.MINUTE, second);
     892         cal.set(Calendar.MILLISECOND, 0);
     893         return cal.getTime();
     894     }
     895 
     896     /**
     897      * 返回指定日期的起始时间
     898      *
     899      * @param date 指定日期(例如2014-08-01)
     900      * @return 返回起始时间(例如2014-08-01 00:00:00)
     901      */
     902     public static Date getIntegralStartTime(Date date) {
     903         return getResetTime(date, 0, 0, 0);
     904     }
     905 
     906     /**
     907      * 返回指定日期的结束时间
     908      *
     909      * @param date 指定日期(例如2014-08-01)
     910      * @return 返回结束时间(例如2014-08-01 23:59:59)
     911      */
     912     public static Date getIntegralEndTime(Date date) {
     913         return getResetTime(date, 23, 59, 59);
     914     }
     915 
     916     /**
     917      * 获取指定日期累加年月日后的时间
     918      *
     919      * @param date  指定日期
     920      * @param year  指定年数
     921      * @param month 指定月数
     922      * @param day   指定天数
     923      * @return 返回累加年月日后的时间
     924      */
     925     public static Date rollDate(Date date, int year, int month, int day) {
     926         Calendar cal = Calendar.getInstance();
     927         if (date != null) {
     928             cal.setTime(date);
     929         }
     930         cal.add(Calendar.YEAR, year);
     931         cal.add(Calendar.MONTH, month);
     932         cal.add(Calendar.DAY_OF_MONTH, day);
     933         return cal.getTime();
     934     }
     935 
     936     /**
     937      * 获取指定日期累加指定月数后的时间
     938      *
     939      * @param date  指定日期
     940      * @param month 指定月数
     941      * @return 返回累加月数后的时间
     942      */
     943     public static Date rollMonth(Date date, int month) {
     944         return rollDate(date, 0, month, 0);
     945     }
     946 
     947     /**
     948      * 获取指定日期累加指定天数后的时间
     949      *
     950      * @param date 指定日期
     951      * @param day  指定天数
     952      * @return 返回累加天数后的时间
     953      */
     954     public static Date rollDay(Date date, int day) {
     955         return rollDate(date, 0, 0, day);
     956     }
     957 
     958     /**
     959      * 计算指定日期所在月份的天数
     960      *
     961      * @param date 指定日期
     962      * @return 返回所在月份的天数
     963      */
     964     public static int getDayOfMonth(Date date) {
     965         Calendar cal = Calendar.getInstance();
     966         if (date != null) {
     967             cal.setTime(date);
     968         }
     969         int dayOfMonth = cal.getActualMaximum(Calendar.DATE);
     970         return dayOfMonth;
     971     }
     972     
     973     /**
     974      * 获取当月第一天的起始时间,例如2014-08-01 00:00:00
     975      *
     976      * @return 返回当月第一天的起始时间
     977      */
     978     public static Date getMonthStartTime() {
     979         Calendar cal = Calendar.getInstance();
     980         cal.set(Calendar.DAY_OF_MONTH, 1);
     981         return getIntegralStartTime(cal.getTime());
     982     }
     983 
     984     /**
     985      * 获取当月最后一天的结束时间,例如2014-08-31 23:59:59
     986      *
     987      * @return 返回当月最后一天的结束时间
     988      */
     989     public static Date getMonthEndTime() {
     990         Calendar cal = Calendar.getInstance();
     991         cal.set(Calendar.DAY_OF_MONTH, getDayOfMonth(cal.getTime()));
     992         return getIntegralEndTime(cal.getTime());
     993     }
     994 
     995     /**
     996      * 获取上个月第一天的起始时间,例如2014-07-01 00:00:00
     997      *
     998      * @return 返回上个月第一天的起始时间
     999      */
    1000     public static Date getLastMonthStartTime() {
    1001         Calendar cal = Calendar.getInstance();
    1002         cal.add(Calendar.MONTH, -1);
    1003         cal.set(Calendar.DAY_OF_MONTH, 1);
    1004         return getIntegralStartTime(cal.getTime());
    1005     }
    1006 
    1007     /**
    1008      * 获取上个月最后一天的结束时间,例如2014-07-31 23:59:59
    1009      *
    1010      * @return 返回上个月最后一天的结束时间
    1011      */
    1012     public static Date getLastMonthEndTime() {
    1013         Calendar cal = Calendar.getInstance();
    1014         cal.add(Calendar.MONTH, -1);
    1015         cal.set(Calendar.DAY_OF_MONTH, getDayOfMonth(cal.getTime()));
    1016         return getIntegralEndTime(cal.getTime());
    1017     }
    1018 
    1019     /**
    1020      * 获取下个月第一天的起始时间,例如2014-09-01 00:00:00
    1021      *
    1022      * @return 返回下个月第一天的起始时间
    1023      */
    1024     public static Date getNextMonthStartTime() {
    1025         Calendar cal = Calendar.getInstance();
    1026         cal.add(Calendar.MONTH, 1);
    1027         cal.set(Calendar.DAY_OF_MONTH, 1);
    1028         return getIntegralStartTime(cal.getTime());
    1029     }
    1030 
    1031     /**
    1032      * 获取下个月最后一天的结束时间,例如2014-09-30 23:59:59
    1033      *
    1034      * @return 返回下个月最后一天的结束时间
    1035      */
    1036     public static Date getNextMonthEndTime() {
    1037         Calendar cal = Calendar.getInstance();
    1038         cal.add(Calendar.MONTH, 1);
    1039         cal.set(Calendar.DAY_OF_MONTH, getDayOfMonth(cal.getTime()));
    1040         return getIntegralEndTime(cal.getTime());
    1041     }
    1042 
    1043     /**
    1044      * 获取当前季度第一天的起始时间
    1045      *
    1046      * @return 返回当前季度第一天的起始时间
    1047      */
    1048     public static Date getQuarterStartTime() {
    1049         Calendar cal = Calendar.getInstance();
    1050         int month = cal.get(Calendar.MONTH);
    1051         if (month < 3) {
    1052             cal.set(Calendar.MONTH, 0);
    1053         } else if (month < 6) {
    1054             cal.set(Calendar.MONTH, 3);
    1055         } else if (month < 9) {
    1056             cal.set(Calendar.MONTH, 6);
    1057         } else {
    1058             cal.set(Calendar.MONTH, 9);
    1059         }
    1060         cal.set(Calendar.DAY_OF_MONTH, 1);
    1061         return getIntegralStartTime(cal.getTime());
    1062     }
    1063 
    1064     /**
    1065      * 获取当前季度最后一天的结束时间
    1066      *
    1067      * @return 返回当前季度最后一天的结束时间
    1068      */
    1069     public static Date getQuarterEndTime() {
    1070         Calendar cal = Calendar.getInstance();
    1071         int month = cal.get(Calendar.MONTH);
    1072         if (month < 3) {
    1073             cal.set(Calendar.MONTH, 2);
    1074         } else if (month < 6) {
    1075             cal.set(Calendar.MONTH, 5);
    1076         } else if (month < 9) {
    1077             cal.set(Calendar.MONTH, 8);
    1078         } else {
    1079             cal.set(Calendar.MONTH, 11);
    1080         }
    1081         cal.set(Calendar.DAY_OF_MONTH, getDayOfMonth(cal.getTime()));
    1082         return getIntegralEndTime(cal.getTime());
    1083     }
    1084 
    1085     /**
    1086      * 获取前一个工作日
    1087      *
    1088      * @return 返回前一个工作日
    1089      */
    1090     public static Date getPrevWorkday() {
    1091         Calendar cal = Calendar.getInstance();
    1092         cal.add(Calendar.DAY_OF_MONTH, -1);
    1093         if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    1094             cal.add(Calendar.DAY_OF_MONTH, -2);
    1095         }
    1096         if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
    1097             cal.add(Calendar.DAY_OF_MONTH, -1);
    1098         }
    1099         return getIntegralStartTime(cal.getTime());
    1100     }
    1101 
    1102     /**
    1103      * 获取下一个工作日
    1104      *
    1105      * @return 返回下个工作日
    1106      */
    1107     public static Date getNextWorkday() {
    1108         Calendar cal = Calendar.getInstance();
    1109         cal.add(Calendar.DAY_OF_MONTH, 1);
    1110         if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
    1111             cal.add(Calendar.DAY_OF_MONTH, 2);
    1112         }
    1113         if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    1114             cal.add(Calendar.DAY_OF_MONTH, 1);
    1115         }
    1116         return getIntegralStartTime(cal.getTime());
    1117     }
    1118 
    1119     /**
    1120      * 获取当周的第一个工作日
    1121      *
    1122      * @return 返回第一个工作日
    1123      */
    1124     public static Date getFirstWorkday() {
    1125         Calendar cal = Calendar.getInstance();
    1126         cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    1127         return getIntegralStartTime(cal.getTime());
    1128     }
    1129 
    1130     /**
    1131      * 获取当周的最后一个工作日
    1132      *
    1133      * @return 返回最后一个工作日
    1134      */
    1135     public static Date getLastWorkday() {
    1136         Calendar cal = Calendar.getInstance();
    1137         cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    1138         return getIntegralStartTime(cal.getTime());
    1139     }
    1140 
    1141     /**
    1142      * 判断指定日期是否是工作日
    1143      *
    1144      * @param date 指定日期
    1145      * @return 如果是工作日返回true,否则返回false
    1146      */
    1147     public static boolean isWorkday(Date date) {
    1148         Calendar cal = Calendar.getInstance();
    1149         if (date != null) {
    1150             cal.setTime(date);
    1151         }
    1152         int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
    1153         return !(dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY);
    1154     }
    1155 
    1156     /**
    1157      * 获取指定日期是星期几
    1158      *
    1159      * @param date 指定日期
    1160      * @return 返回星期几的描述
    1161      */
    1162     public static String getWeekdayDesc(Date date) {
    1163         final String[] weeks = new String[]{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    1164         Calendar cal = Calendar.getInstance();
    1165         if (date != null) {
    1166             cal.setTime(date);
    1167         }
    1168         return weeks[cal.get(Calendar.DAY_OF_WEEK) - 1];
    1169     }
    1170 
    1171 
    1172     /***********2017年10月25日 by左宇新增以下代码***********/
    1173 
    1174     /**
    1175      * 获取当年的第一天
    1176      * @return
    1177      */
    1178     public static Date getCurrYearFirst(){
    1179         Calendar currCal=Calendar.getInstance();
    1180         int currentYear = currCal.get(Calendar.YEAR);
    1181         return getYearFirst(currentYear);
    1182     }
    1183 
    1184     /**
    1185      * 获取当年的最后一天
    1186      * @return
    1187      */
    1188     public static Date getCurrYearLast(){
    1189         Calendar currCal=Calendar.getInstance();
    1190         int currentYear = currCal.get(Calendar.YEAR);
    1191         return getYearLast(currentYear);
    1192     }
    1193 
    1194     /**
    1195      * 获取某年第一天日期
    1196      * @param year 年份
    1197      * @return Date
    1198      */
    1199     public static Date getYearFirst(int year){
    1200         Calendar calendar = Calendar.getInstance();
    1201         calendar.clear();
    1202         calendar.set(Calendar.YEAR, year);
    1203         Date currYearFirst = calendar.getTime();
    1204         return currYearFirst;
    1205     }
    1206 
    1207     /**
    1208      * 获取某年最后一天日期
    1209      * @param year 年份
    1210      * @return Date
    1211      */
    1212     public static Date getYearLast(int year){
    1213         Calendar calendar = Calendar.getInstance();
    1214         calendar.clear();
    1215         calendar.set(Calendar.YEAR, year);
    1216         calendar.roll(Calendar.DAY_OF_YEAR, -1);
    1217         Date currYearLast = calendar.getTime();
    1218         return currYearLast;
    1219     }
    1220     /*********** end ***********/
    1221 
    1222     /**
    1223      * 获取指定日期的月份第一天的日期
    1224      * @param date
    1225      * @return
    1226      */
    1227     public static Date getMonthFirstDate(Date date){
    1228           Calendar cal = Calendar.getInstance();
    1229           cal.setTime(date);
    1230           cal.set(Calendar.DAY_OF_MONTH, 1);
    1231           return getIntegralStartTime(cal.getTime());
    1232     }
    1233     /**
    1234      * 获取指定日期的下个月第一天的日期
    1235      * @param date
    1236      * @return
    1237      */
    1238     public static Date getNextMonthFirstDate(Date date){
    1239         Calendar cal = Calendar.getInstance();
    1240         cal.setTime(date);
    1241         cal.add(Calendar.MONTH, 1);
    1242         cal.set(Calendar.DAY_OF_MONTH, 1);
    1243         return getIntegralStartTime(cal.getTime());
    1244     }
    1245 
    1246 
    1247     /***********2018年02月06日 by左宇新增以下代码***********/
    1248 
    1249     /**
    1250      * 获取任意时间的年份第一天
    1251      * @param date
    1252      * @return
    1253      * @author zuoy 2018/02/06
    1254      */
    1255     public static Date getFirstYearDate(Date date) {
    1256         Calendar calendar = Calendar.getInstance();
    1257         calendar.setTime(date);
    1258         int currentYear = calendar.get(Calendar.YEAR);
    1259         return getYearFirst(currentYear);
    1260     }
    1261 
    1262     /**
    1263      * 获取任意时间的年份最后一天
    1264      * @param date
    1265      * @return
    1266      * @author zuoy 2018/02/06
    1267      */
    1268     public static Date getLastYearDate(Date date) {
    1269         Calendar calendar = Calendar.getInstance();
    1270         calendar.setTime(date);
    1271         int currentYear = calendar.get(Calendar.YEAR);
    1272         return getYearLast(currentYear);
    1273     }
    1274     /**
    1275      * 返回指定日期的季的第一天
    1276      *
    1277      * @param date
    1278      * @return
    1279      */
    1280     public static Date getFirstQuarterDate(Date date) {
    1281         Calendar c = Calendar.getInstance();
    1282         c.setTime(date);
    1283         int currentMonth = c.get(Calendar.MONTH) + 1;
    1284         if (currentMonth >= 1 && currentMonth <= 3) {
    1285             c.set(Calendar.MONTH, 0);
    1286         }else if (currentMonth >= 4 && currentMonth <= 6) {
    1287             c.set(Calendar.MONTH, 3);
    1288         }else if (currentMonth >= 7 && currentMonth <= 9) {
    1289             c.set(Calendar.MONTH, 4);
    1290         }else if (currentMonth >= 10 && currentMonth <= 12) {
    1291             c.set(Calendar.MONTH, 9);
    1292         }else{
    1293             c.set(Calendar.DATE, 1);
    1294         }
    1295         c.set(Calendar.DATE, 1);
    1296         return parseDate(c.getTime());
    1297     }
    1298 
    1299     /**
    1300      * 返回指定日期的季的最后一天
    1301      *
    1302      * @param date
    1303      * @return
    1304      */
    1305     public static Date getLastQuarterDate(Date date) {
    1306         Calendar c = Calendar.getInstance();
    1307         c.setTime(date);
    1308         int currentMonth = c.get(Calendar.MONTH) + 1;
    1309         if (currentMonth >= 1 && currentMonth <= 3) {
    1310             c.set(Calendar.MONTH, 2);
    1311             c.set(Calendar.DATE, 31);
    1312         } else if (currentMonth >= 4 && currentMonth <= 6) {
    1313             c.set(Calendar.MONTH, 5);
    1314             c.set(Calendar.DATE, 30);
    1315         } else if (currentMonth >= 7 && currentMonth <= 9) {
    1316             c.set(Calendar.MONTH, 8);
    1317             c.set(Calendar.DATE, 30);
    1318         } else if (currentMonth >= 10 && currentMonth <= 12) {
    1319             c.set(Calendar.MONTH, 11);
    1320             c.set(Calendar.DATE, 31);
    1321         }
    1322         return parseDate(c.getTime());
    1323     }
    1324 
    1325     /**
    1326      * 获取任意时间的月第一天
    1327      * @param date
    1328      * @return
    1329      * @author zuoy 2018/02/06
    1330      */
    1331     public static Date getFirstMonthDate(Date date) {
    1332         Calendar calendar = Calendar.getInstance();
    1333         calendar.setTime(date);
    1334         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
    1335         return parseDate(calendar.getTime());
    1336     }
    1337 
    1338     /**
    1339      * 获取任意时间的月的最后一天
    1340      * @param date
    1341      * @return
    1342      * @author zuoy 2018/02/06
    1343      */
    1344     public static Date getLastMonthDate(Date date) {
    1345         Calendar calendar = Calendar.getInstance();
    1346         calendar.setTime(date);
    1347         calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
    1348         return parseDate(calendar.getTime());
    1349     }
    1350 
    1351     /**
    1352      * 获取任意时间的周一
    1353      * @param date
    1354      * @return
    1355      * @author zuoy 2018/02/06
    1356      */
    1357     public static Date getFirstWeekDate(Date date) {
    1358         Calendar calendar = Calendar.getInstance();
    1359         calendar.setTime(date);
    1360         //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
    1361         int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    1362         if(1 == dayWeek) {
    1363             calendar.add(Calendar.DAY_OF_MONTH, -1);
    1364         }
    1365         calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    1366         int day = calendar.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
    1367         calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek()-day);//根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
    1368         return parseDate(calendar.getTime());
    1369     }
    1370 
    1371     /**
    1372      * 获取任意时间的周末
    1373      * @param date
    1374      * @return
    1375      * @author zuoy 2018/02/06
    1376      */
    1377     public static Date getLastWeekDate(Date date) {
    1378         Date firstDate = getFirstWeekDate(date);
    1379         Calendar calendar = Calendar.getInstance();
    1380         calendar.setTime(firstDate);
    1381         calendar.add(Calendar.DATE, 6);
    1382         return parseDate(calendar.getTime());
    1383     }
    1384 
    1385     /**
    1386      * 获取日期属于当年第几季度
    1387      *
    1388      * @param date
    1389      * @return
    1390      */
    1391     public static int getQuarterOfYear(Date date) {
    1392         Calendar calendar = Calendar.getInstance();
    1393         calendar.setTime(date);
    1394         return calendar.get(Calendar.MONTH) / 3 + 1;
    1395     }
    1396 
    1397     /**
    1398      * 获取日期属于当年第几周
    1399      * @param date
    1400      * @return
    1401      * @author zuoy 2018/02/06
    1402      */
    1403     public static int getWeekOfYear(Date date){
    1404         Calendar calendar = Calendar.getInstance();
    1405         calendar.setFirstDayOfWeek(Calendar.MONDAY);
    1406         calendar.setTime(date);
    1407         return calendar.get(Calendar.WEEK_OF_YEAR);
    1408     }
    1409 
    1410     /**
    1411      * 获取指定日期年份
    1412      * @param date
    1413      * @return
    1414      * @author zuoy 2018/02/06
    1415      */
    1416     public static int getYear(Date date) {
    1417         Calendar calendar = Calendar.getInstance();
    1418         calendar.setTime(date);
    1419         return calendar.get(Calendar.YEAR);
    1420     }
    1421     /**
    1422      * 获取指定日期月份
    1423      * @param date
    1424      * @return
    1425      * @author zuoy 2018/02/06
    1426      */
    1427     public static int getMonth(Date date) {
    1428         Calendar calendar = Calendar.getInstance();
    1429         calendar.setTime(date);
    1430         return calendar.get(Calendar.MONTH) + 1;
    1431     }
    1432 
    1433     /**
    1434      * 日期的增加月份
    1435      *
    1436      * @param date   日期
    1437      * @param addMonth 增加的月份,正数表示增加,负数表示减少
    1438      * @return Date 日期的增加月数后的结果
    1439      * @author zuoy 2018/02/09
    1440      */
    1441     public static Date addMonth(Date date, int addMonth) {
    1442         Calendar calendar = Calendar.getInstance();
    1443         calendar.setTime(date);
    1444         calendar.add(Calendar.MONTH, addMonth);
    1445         return new Date(calendar.getTime().getTime());
    1446     }
    1447     /*********** end ***********/
    1448 
    1449     /***********2018年03月13日 by左宇新增以下代码***********/
    1450     /**
    1451      * 日期的增加年份
    1452      *
    1453      * @param date     日期
    1454      * @param addYear 增加的周数,正数表示增加,负数表示减少
    1455      * @return Date 日期的增加年份后的结果
    1456      */
    1457     public static Date addYear(Date date, int addYear) {
    1458         Calendar calendar = Calendar.getInstance();
    1459         calendar.setTime(date);
    1460         calendar.add(Calendar.YEAR, addYear);
    1461         return new Date(calendar.getTime().getTime());
    1462     }
    1463 
    1464     /**
    1465      * 日期的增加季度
    1466      *
    1467      * @param date     日期
    1468      * @param addQuarter 增加的周数,正数表示增加,负数表示减少
    1469      * @return Date 日期的增加季度后的结果
    1470      */
    1471     public static Date addQuarter(Date date, int addQuarter) {
    1472         int newAddQuarter = addQuarter < 0 ? addQuarter - 3 : addQuarter + 3;
    1473         Calendar calendar = Calendar.getInstance();
    1474         calendar.setTime(date);
    1475         calendar.add(Calendar.MONTH, newAddQuarter);
    1476         return new Date(calendar.getTime().getTime());
    1477     }
    1478     /**
    1479      * 日期的增加周数
    1480      *
    1481      * @param date     日期
    1482      * @param addWeek 增加的周数,正数表示增加,负数表示减少
    1483      * @return Date 日期的增加周数后的结果
    1484      */
    1485     public static Date addWeek(Date date, int addWeek) {
    1486         Calendar calendar = Calendar.getInstance();
    1487         calendar.setTime(date);
    1488         calendar.add(Calendar.WEEK_OF_YEAR, addWeek);
    1489         return new Date(calendar.getTime().getTime());
    1490     }
    1491 
    1492     /**
    1493      * 获取日期属于当月第几周
    1494      *
    1495      * @param date
    1496      * @return
    1497      * @throws Exception
    1498      */
    1499     public static int getWeekOfMonth(Date date){
    1500         Calendar calendar = Calendar.getInstance();
    1501         calendar.setTime(date);
    1502         //第几周
    1503         int week = calendar.get(Calendar.WEEK_OF_MONTH);
    1504         //第几天,从周日开始
    1505         int day = calendar.get(Calendar.DAY_OF_WEEK);
    1506         return week;
    1507     }
    1508 
    1509     /**
    1510      * 将字符串转为yyyy-MM-dd日期类型
    1511      *
    1512      * @param dateStr
    1513      * @return
    1514      * @author zuoy 2018-03-13
    1515      */
    1516     public static Date parseDate(String dateStr) {
    1517         return parse(dateStr, "yyyy-MM-dd");
    1518     }
    1519 
    1520     /*********** end ***********/
    1521 
    1522 
    1523 }
  • 相关阅读:
    体检前注意事项
    SSO之CAS单点登录详细搭建教程
    如何通过session控制单点登录
    谈谈防止Ajax重复点击提交
    js判断是移动端还是pc端
    HttpClient通过GET和POST获取网页内容
    HttpClient 4.x 执行网站登录并抓取网页的代码
    360每日自动签到,领取积分 (java httpclient4.x)
    Java @override报错的解决方法
    无开发经验,初学python
  • 原文地址:https://www.cnblogs.com/chinazhou-wang/p/11815689.html
Copyright © 2011-2022 走看看