import java.sql.Timestamp;
 import java.text.ParseException;
 import java.text.ParsePosition;
 import java.text.SimpleDateFormat;
 import java.time.format.DateTimeFormatter;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.Locale;
 import java.util.Random; 
public class DateUtil {
 
    public static String pattern = "yyyy-MM-dd";
     public static SimpleDateFormat formatter = new SimpleDateFormat(pattern);
     public static SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(pattern); 
    public static DateTimeFormatter getDateTimeFormatter() {
         return dateFormatter;
     } 
    /**
      * 获取现在时间
      *
      * @return 返回时间类型 yyyy-MM-dd HH:mm:ss
      */
     public static Date getNowDate() {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String dateString = formatter.format(new Date());
         ParsePosition pos = new ParsePosition(8);
         Date currentTime_2 = formatter.parse(dateString, pos);
         return currentTime_2;
     } 
    /**
      * 获取现在时间
      *
      * @return返回短时间格式 yyyy-MM-dd
      */
     public static Date getNowDateShort() {
         String dateString = formatter.format(new Date());
         ParsePosition pos = new ParsePosition(8);
         Date currentTime_2 = formatter.parse(dateString, pos);
         return currentTime_2;
     } 
    /**
      * 获取现在时间
      *
      * @return返回字符串格式 yyyy-MM-dd HH:mm:ss
      */
     public static String getStringDate() {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String dateString = formatter.format(new Date());
         return dateString;
     } 
    /**
      * 获取现在时间
      *
      * @return返回字符串格式 yyyyMMddHHmmss
      */
     public static String getStringAllDate() {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmssSSS");
         String dateString = formatter.format(new Date());
         return dateString;
     } 
    /**
      * 获取现在时间
      *
      * @return 返回短时间字符串格式yyyy-MM-dd
      */
     public static String getStringDateShort() {
         String dateString = formatter.format(new Date());
         return dateString;
     } 
    /**
      * 获取时间 小时:分;秒 HH:mm:ss
      *
      * @return
      */
     public static String getTimeShort() {
         SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");
         String dateString = formatter.format(new Date());
         return dateString;
     } 
    /**
      * 将长时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
      *
      * @param strDate
      * @return
      */
     public static Date strToDateLong(String strDate) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         ParsePosition pos = new ParsePosition(0);
         Date strtodate = formatter.parse(strDate, pos);
         return strtodate;
     } 
    /**
      * 将长时间格式时间转换为字符串 yyyy-MM-dd HH:mm:ss
      *
      * @param dateDate
      * @return
      */
     public static String dateToStrLong(java.util.Date dateDate) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String dateString = formatter.format(dateDate);
         return dateString;
     } 
    /**
      * 将短时间格式时间转换为字符串 yyyy-MM-dd
      *
      * @param dateDate
      * @param
      * @return
      */
     public static String dateToStr(java.util.Date dateDate) {
         String dateString = formatter.format(dateDate);
         return dateString;
     } 
    public static String dateToStr(java.time.LocalDate dateDate) {
         String dateString = dateFormatter.format(dateDate);
         return dateString;
     } 
    /**
      * 将短时间格式字符串转换为时间 yyyy-MM-dd
      *
      * @param strDate
      * @return
      */
     public static Date strToDate(String strDate) {
         ParsePosition pos = new ParsePosition(0);
         Date strtodate = formatter.parse(strDate, pos);
         return strtodate;
     } 
    /**
      * 将短时间格式字符串转换为时间 yyyy-MM-dd HH:mm:ss
      *
      * @param strDate
      * @return
      */
     public static Timestamp strToDateSql(String strDate) {
         ParsePosition pos = new ParsePosition(0);
         Date strtodate = formatter2.parse(strDate, pos);
         return new Timestamp(strtodate.getTime());
     } 
    /**
      * 得到现在时间
      *
      * @return
      */
     public static Date getNow() {
         Date currentTime = new Date();
         return currentTime;
     } 
    /**
      * 提取一个月中的最后一天
      *
      * @param day
      * @return
      */
     public static Date getLastDate(long day) {
         Date date = new Date();
         long date_3_hm = date.getTime() - 3600000 * 34 * day;
         Date date_3_hm_date = new Date(date_3_hm);
         return date_3_hm_date;
     } 
    /**
      * 得到现在时间
      *
      * @return 字符串 yyyyMMdd HHmmss
      */
     public static String getStringToday() {
         Date currentTime = new Date();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd HHmmss");
         String dateString = formatter.format(currentTime);
         return dateString;
     } 
    /**
      * 功能:<br/>
      *
      * @author Tony
      * @version 2016年12月16日 下午4:41:51 <br/>
      */
     public static String getTodayShort() {
         Date currentTime = new Date();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");
         String dateString = formatter.format(currentTime);
         return dateString;
     } 
    /**
      * @param @param  value
      * @param @return
      * @return String
      * @throws
      * @Description: 输入一个整数类型的字符串, 然后转换成时分秒的形式输出
      * 例如:输入568
      * 返回结果为:00:09:28
      * 输入null或者“”
      * 返回结果为:00:00:00
      * @author Tony 鬼手卡卡
      * @date 2016-4-20
      */
     public static String getHHMMSS(String value) {
         String hour = "00";
         String minute = "00";
         String second = "00";
         if (value != null && !value.trim().equals("")) {
             int v_int = Integer.valueOf(value);
             hour = v_int / 3600 + "";//获得小时;
             minute = v_int % 3600 / 60 + "";//获得小时;
             second = v_int % 3600 % 60 + "";//获得小时;
         }
         return (hour.length() > 1 ? hour : "0" + hour) + ":" + (minute.length() > 1 ? minute : "0" + minute) + ":" + (second.length() > 1 ? second : "0" + second);
     } 
    /**
      * 得到现在小时
      */
     public static String getHour() {
         Date currentTime = new Date();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String dateString = formatter.format(currentTime);
         String hour;
         hour = dateString.substring(11, 13);
         return hour;
     } 
    /**
      * 得到现在分钟
      *
      * @return
      */
     public static String getTime() {
         Date currentTime = new Date();
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String dateString = formatter.format(currentTime);
         String min;
         min = dateString.substring(14, 16);
         return min;
     } 
    /**
      * 根据用户传入的时间表示格式,返回当前时间的格式 如果是yyyyMMdd,注意字母y不能大写。
      *
      * @param sformat yyyyMMddhhmmss
      * @return
      */
     public static String getUserDate(String sformat) {
         Date currentTime = new Date();
         SimpleDateFormat formatter = new SimpleDateFormat(sformat);
         String dateString = formatter.format(currentTime);
         return dateString;
     } 
    /**
      * 二个小时时间间的差值,必须保证二个时间都是"HH:MM"的格式,返回字符型的分钟
      */
     public static String getTwoHour(String st1, String st2) {
         String[] kk = null;
         String[] jj = null;
         kk = st1.split(":");
         jj = st2.split(":");
         if (Integer.parseInt(kk[0]) < Integer.parseInt(jj[0]))
             return "0";
         else {
             double y = Double.parseDouble(kk[0]) + Double.parseDouble(kk[1]) / 60;
             double u = Double.parseDouble(jj[0]) + Double.parseDouble(jj[1]) / 60;
             if ((y - u) > 0)
                 return y - u + "";
             else
                 return "0";
         }
     } 
    /**
      * 得到二个日期间的间隔天数
      */
     public static String getTwoDay(String sj1, String sj2) {
         long day = 0;
         try {
             java.util.Date date = formatter.parse(sj1);
             java.util.Date mydate = formatter.parse(sj2);
             day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
         } catch (Exception e) {
             return "";
         }
         return day + "";
     } 
    /**
      * 时间前推或后推分钟,其中JJ表示分钟.
      */
     public static String getPreTime(String sj1, String jj) {
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String mydate1 = "";
         try {
             Date date1 = format.parse(sj1);
             long Time = (date1.getTime() / 1000) + Integer.parseInt(jj) * 60;
             date1.setTime(Time * 1000);
             mydate1 = format.format(date1);
         } catch (Exception e) {
         }
         return mydate1;
     } 
    /**
      * 得到一个时间延后或前移几天的时间,nowdate(yyyy-mm-dd)为时间,delay为前移或后延的天数
      */
     public static String getNextDay(String nowdate, String delay) {
         try {
             String mdate = "";
             Date d = strToDate(nowdate);
             long myTime = (d.getTime() / 1000) + Integer.parseInt(delay) * 24 * 60 * 60;
             d.setTime(myTime * 1000);
             mdate = formatter.format(d);
             return mdate;
         } catch (Exception e) {
             return "";
         }
     } 
    /**
      * 功能:<br/> 距离现在几天的时间是多少
      * 获得一个时间字符串,格式为:yyyy-MM-dd HH:mm:ss
      * day  如果为整数,表示未来时间
      * 如果为负数,表示过去时间
      *
      * @author Tony
      * @version 2016年11月29日 上午11:02:56 <br/>
      */
     public static String getFromNow(int day) {
         Date date = new Date();
         long dateTime = (date.getTime() / 1000) + day * 24 * 60 * 60;
         date.setTime(dateTime * 1000);
         return formatter2.format(date);
     } 
    /**
      * 判断是否润年
      *
      * @param ddate
      * @return
      */
     public static boolean isLeapYear(String ddate) { 
        /**
          * 详细设计: 1.被400整除是闰年,否则: 2.不能被4整除则不是闰年 3.能被4整除同时不能被100整除则是闰年
          * 3.能被4整除同时能被100整除则不是闰年
          */
         Date d = strToDate(ddate);
         GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
         gc.setTime(d);
         int year = gc.get(Calendar.YEAR);
         if ((year % 400) == 0)
             return true;
         else if ((year % 4) == 0) {
             if ((year % 100) == 0)
                 return false;
             else
                 return true;
         } else
             return false;
     } 
    /**
      * 返回美国时间格式 26 Apr 2006
      *
      * @param str
      * @return
      */
     public static String getEDate(String str) {
         ParsePosition pos = new ParsePosition(0);
         Date strtodate = formatter.parse(str, pos);
         String j = strtodate.toString();
         String[] k = j.split(" ");
         return k[2] + k[1].toUpperCase() + k[5].substring(2, 4);
     } 
    /**
      * 获取一个月的最后一天
      *
      * @param dat
      * @return
      */
     public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd
         String str = dat.substring(0, 8);
         String month = dat.substring(5, 7);
         int mon = Integer.parseInt(month);
         if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
             str += "31";
         } else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
             str += "30";
         } else {
             if (isLeapYear(dat)) {
                 str += "29";
             } else {
                 str += "28";
             }
         }
         return str;
     } 
    /**
      * 判断二个时间是否在同一个周
      *
      * @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;
     } 
    /**
      * 产生周序列,即得到当前时间所在的年度是第几周
      *
      * @return
      */
     public static String getSeqWeek() {
         Calendar c = Calendar.getInstance(Locale.CHINA);
         String week = Integer.toString(c.get(Calendar.WEEK_OF_YEAR));
         if (week.length() == 1)
             week = "0" + week;
         String year = Integer.toString(c.get(Calendar.YEAR));
         return year + week;
     } 
    /**
      * 获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号
      *
      * @param sdate
      * @param num
      * @return
      */
     public static String getWeek(String sdate, String num) {
         // 再转换为时间
         Date dd = DateUtil.strToDate(sdate);
         Calendar c = Calendar.getInstance();
         c.setTime(dd);
         if (num.equals("1")) // 返回星期一所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
         else if (num.equals("2")) // 返回星期二所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
         else if (num.equals("3")) // 返回星期三所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
         else if (num.equals("4")) // 返回星期四所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
         else if (num.equals("5")) // 返回星期五所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
         else if (num.equals("6")) // 返回星期六所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
         else if (num.equals("0")) // 返回星期日所在的日期
             c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
         return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
     } 
    /**
      * 根据一个日期,返回是星期几的字符串
      *
      * @param sdate
      * @return
      */
     public static String getWeek(String sdate) {
         // 再转换为时间
         Date date = DateUtil.strToDate(sdate);
         Calendar c = Calendar.getInstance();
         c.setTime(date);
         // int hour=c.get(Calendar.DAY_OF_WEEK);
         // hour中存的就是星期几了,其范围 1~7
         // 1=星期日 7=星期六,其他类推
         return new SimpleDateFormat("EEEE").format(c.getTime());
     } 
    public static String getWeekStr(String sdate) {
         String str = "";
         str = DateUtil.getWeek(sdate);
         if ("1".equals(str)) {
             str = "星期日";
         } else if ("2".equals(str)) {
             str = "星期一";
         } else if ("3".equals(str)) {
             str = "星期二";
         } else if ("4".equals(str)) {
             str = "星期三";
         } else if ("5".equals(str)) {
             str = "星期四";
         } else if ("6".equals(str)) {
             str = "星期五";
         } else if ("7".equals(str)) {
             str = "星期六";
         }
         return str;
     } 
    /**
      * 两个时间之间的天数
      *
      * @param date1
      * @param date2
      * @return
      */
     public static long getDays(String date1, String date2) {
         if (date1 == null || date1.equals(""))
             return 0;
         if (date2 == null || date2.equals(""))
             return 0;
         // 转换为标准时间
         java.util.Date date = null;
         java.util.Date mydate = null;
         try {
             date = formatter.parse(date1);
             mydate = formatter.parse(date2);
         } catch (Exception e) {
         }
         long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
         return day;
     } 
    /**
      * 形成如下的日历 , 根据传入的一个时间返回一个结构 星期日 星期一 星期二 星期三 星期四 星期五 星期六 下面是当月的各个时间
      * 此函数返回该日历第一行星期日所在的日期
      *
      * @param sdate
      * @return
      */
     public static String getNowMonth(String sdate) {
         // 取该时间所在月的一号
         sdate = sdate.substring(0, 8) + "01"; 
        // 得到这个月的1号是星期几
         Date date = DateUtil.strToDate(sdate);
         Calendar c = Calendar.getInstance();
         c.setTime(date);
         int u = c.get(Calendar.DAY_OF_WEEK);
         String newday = DateUtil.getNextDay(sdate, (1 - u) + "");
         return newday;
     } 
    /**
      * 取得数据库主键 生成格式为yyyymmddhhmmss+k位随机数
      *
      * @param k 表示是取几位随机数,可以自己定
      */ 
    public static String getNo(int k) {
 
        return getUserDate("yyyyMMddhhmmss") + getRandom(k);
     } 
    /**
      * 返回一个随机数
      *
      * @param i
      * @return
      */
     public static String getRandom(int i) {
         Random jjj = new Random();
         // int suiJiShu = jjj.nextInt(9);
         if (i == 0)
             return "";
         String jj = "";
         for (int k = 0; k < i; k++) {
             jj = jj + jjj.nextInt(9);
         }
         return jj;
     }
    
     public static boolean RightDate(String date) { 
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
         ;
         if (date == null)
             return false;
         if (date.length() > 10) {
             sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
         } else {
             sdf = new SimpleDateFormat("yyyy-MM-dd");
         }
         try {
             sdf.parse(date);
         } catch (ParseException pe) {
             return false;
         }
         return true;
     } 
    /***************************************************************************
      * //nd=1表示返回的值中包含年度 //yf=1表示返回的值中包含月份 //rq=1表示返回的值中包含日期 //format表示返回的格式 1
      * 以年月日中文返回 2 以横线-返回 // 3 以斜线/返回 4 以缩写不带其它符号形式返回 // 5 以点号.返回
      **************************************************************************/
     public static String getStringDateMonth(String sdate, String nd, String yf, String rq, String format) {
         Date currentTime = new Date();
         String dateString = formatter.format(currentTime);
         String s_nd = dateString.substring(0, 4); // 年份
         String s_yf = dateString.substring(5, 7); // 月份
         String s_rq = dateString.substring(8, 10); // 日期
         String sreturn = "";
         //roc.util.MyChar mc = new roc.util.MyChar();
         //if (sdate == null || sdate.equals("") || !mc.Isdate(sdate)) { // 处理空值情况
         if (sdate == null || sdate.equals("")) {
             if (nd.equals("1")) {
                 sreturn = s_nd;
                 // 处理间隔符
                 if (format.equals("1"))
                     sreturn = sreturn + "年";
                 else if (format.equals("2"))
                     sreturn = sreturn + "-";
                 else if (format.equals("3"))
                     sreturn = sreturn + "/";
                 else if (format.equals("5"))
                     sreturn = sreturn + ".";
             }
             // 处理月份
             if (yf.equals("1")) {
                 sreturn = sreturn + s_yf;
                 if (format.equals("1"))
                     sreturn = sreturn + "月";
                 else if (format.equals("2"))
                     sreturn = sreturn + "-";
                 else if (format.equals("3"))
                     sreturn = sreturn + "/";
                 else if (format.equals("5"))
                     sreturn = sreturn + ".";
             }
             // 处理日期
             if (rq.equals("1")) {
                 sreturn = sreturn + s_rq;
                 if (format.equals("1"))
                     sreturn = sreturn + "日";
             }
         } else {
             // 不是空值,也是一个合法的日期值,则先将其转换为标准的时间格式
             sdate = getOKDate(sdate);
             s_nd = sdate.substring(0, 4); // 年份
             s_yf = sdate.substring(5, 7); // 月份
             s_rq = sdate.substring(8, 10); // 日期
             if (nd.equals("1")) {
                 sreturn = s_nd;
                 // 处理间隔符
                 if (format.equals("1"))
                     sreturn = sreturn + "年";
                 else if (format.equals("2"))
                     sreturn = sreturn + "-";
                 else if (format.equals("3"))
                     sreturn = sreturn + "/";
                 else if (format.equals("5"))
                     sreturn = sreturn + ".";
             }
             // 处理月份
             if (yf.equals("1")) {
                 sreturn = sreturn + s_yf;
                 if (format.equals("1"))
                     sreturn = sreturn + "月";
                 else if (format.equals("2"))
                     sreturn = sreturn + "-";
                 else if (format.equals("3"))
                     sreturn = sreturn + "/";
                 else if (format.equals("5"))
                     sreturn = sreturn + ".";
             }
             // 处理日期
             if (rq.equals("1")) {
                 sreturn = sreturn + s_rq;
                 if (format.equals("1"))
                     sreturn = sreturn + "日";
             }
         }
         return sreturn;
     } 
    public static String getNextMonthDay(String sdate, int m) {
         sdate = getOKDate(sdate);
         int year = Integer.parseInt(sdate.substring(0, 4));
         int month = Integer.parseInt(sdate.substring(5, 7));
         month = month + m;
         if (month < 0) {
             month = month + 12;
             year = year - 1;
         } else if (month > 12) {
             month = month - 12;
             year = year + 1;
         }
         String smonth = "";
         if (month < 10)
             smonth = "0" + month;
         else
             smonth = "" + month;
         return year + "-" + smonth + "-10";
     } 
    /**
      * 功能:<br/>
      *
      * @author Tony
      * @version 2015-3-31 上午09:29:31 <br/>
      */
     public static String getOKDate(String sdate) {
         if (sdate == null || sdate.equals(""))
             return getStringDateShort(); 
//      if (!VeStr.Isdate(sdate)) {
 //       sdate = getStringDateShort();
 //      }
 //      // 将“/”转换为“-”
 //      sdate = VeStr.Replace(sdate, "/", "-");
         // 如果只有8位长度,则要进行转换
         if (sdate.length() == 8)
             sdate = sdate.substring(0, 4) + "-" + sdate.substring(4, 6) + "-" + sdate.substring(6, 8);
         ParsePosition pos = new ParsePosition(0);
         Date strtodate = formatter.parse(sdate, pos);
         String dateString = formatter.format(strtodate);
         return dateString;
     } 
    /**
      * 获取当前时间的前一天时间
      *
      * @param cl
      * @return
      */
     private static String getBeforeDay(Calendar cl) {
         //使用roll方法进行向前回滚
         //cl.roll(Calendar.DATE, -1);
         //使用set方法直接进行设置
         // int day = cl.get(Calendar.DATE);
         cl.add(Calendar.DATE, -1);
         return formatter.format(cl.getTime());
     } 
    /**
      * 获取当前时间的后一天时间
      *
      * @param cl
      * @return
      */
     private static String getAfterDay(Calendar cl) {
         //使用roll方法进行回滚到后一天的时间
         //cl.roll(Calendar.DATE, 1);
         //使用set方法直接设置时间值
         //int day = cl.get(Calendar.DATE);
         cl.add(Calendar.DATE, 1);
         return formatter.format(cl.getTime());
     } 
    private static String getDateAMPM() {
         GregorianCalendar ca = new GregorianCalendar();
         //结果为“0”是上午     结果为“1”是下午
         int i = ca.get(GregorianCalendar.AM_PM);
         return i == 0 ? "AM" : "PM";
     } 
    private static int compareToDate(String date1, String date2) {
         return date1.compareTo(date2);
     } 
    private static int compareToDateString(String date1, String date2) {
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         int i = 0;
         try {
             long ldate1 = formatter.parse(date1).getTime();
             long ldate2 = formatter.parse(date2).getTime();
             if (ldate1 > ldate2) {
                 i = 1;
             } else if (ldate1 == ldate2) {
                 i = 0;
             } else {
                 i = -1;
             } 
        } catch (ParseException e) {
             e.printStackTrace();
         }
         return i;
     } 
    public static String[] getFiveDate() {
         String[] dates = new String[2];
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(new Date());
         String five = " 05:00:00"; 
        if (getDateAMPM().equals("AM") && compareToDateString(getStringDate(), getStringDateShort() + five) == -1) {
             dates[0] = getBeforeDay(calendar) + five;
             dates[1] = getStringDateShort() + five;
         } else {
             dates[0] = getStringDateShort() + five;
             dates[1] = getAfterDay(calendar) + five;
         } 
        return dates;
     }    public static String getFiveDate2() {
         Calendar calendar = Calendar.getInstance();
         calendar.setTime(new Date());
         String five = " 05:00:00";
         String reStr = "";
         if (getDateAMPM().equals("AM") && compareToDateString(getStringDate(), getStringDateShort() + five) == -1) {
             reStr = getBeforeDay(calendar);
         } else {
             reStr = getStringDateShort();
         }
         return reStr;
     }
 }