package com.xcong.excoin.modules.blackchain.service; import java.sql.Timestamp; import java.text.DateFormat; import java.text.DecimalFormat; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; import java.util.concurrent.TimeUnit; import org.apache.commons.lang.StringUtils; public class DateUtil { public DateUtil() { } /** * 测试用 * @param args * @throws ParseException */ public static void main(String[] args) throws ParseException { // long time = System.currentTimeMillis()+7200000; // Date a = new Date(time); // long space = dateSpaceHours(new Date(), a); // System.out.println(space); // System.out.println(DateUtil.dateToString(DateUtil.getStringToDate(DateUtil.getSQLDateYMD()))); // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); // Date date= DateUtil.addDays(new Date(), -1); // System.out.println(date); // System.out.println(DateUtil.dateToString(date)); // System.out.println(simpleDateFormat.format(date)); // System.out.println(DateUtil.getStringToDate(dateToStringYMD(date),"yyyy-MM-dd")); // System.out.println(DateUtil.getStringToDate(null)); //for(int i=0;i<10;i++){ //System.out.println(getSQLDateYMD()); //} //System.out.println(dateDiff("2013-06-08 12:25:23","2013-07-08 12:25:23")); // System.out.println(currentTimeDiff2("2013-12-08")); // System.out.println(compare_date("2013-07-08 12:25:23", "2013-07-08 12:23:23")); //System.out.println(fomatDate("2013-10-16 9:27:34")); //System.out.println(System.currentTimeMillis()); //System.out.println(getTenTimestamp()); //System.out.println(getSixRandom()); // SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //获取当前时间 // Date time = Calendar.getInstance().getTime(); // System.out.println(simpleDateFormat.format(datePlusOrMinus("2013-10-16 9:27:34",2))); // System.out.println(dateToString(datePlusOrMinus(getSQLDate(), 2))); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // String strDate1 = "2012-3-15"; // String strDate2 = "2013-5-13"; // Date date1=sdf.parse(strDate1); // Date date2=sdf.parse(strDate2); // // // // System.out.println(getMonths(date2,date1)); // System.out.println(daysBetween(date2, date1)); // System.out.println(fomatDate("2014-04")); // System.out.println(fomatDate("2014-05")); // System.out.println(Double.parseDouble(fomatDate("2014-05")) > Double.parseDouble(fomatDate("2014-04"))); // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); // String date1 = "2014-04"; // String date2 = "2015-08"; // Date start = sdf.parse(date1); // Date end = sdf.parse(date2); // // // System.out.println("###start:==" + start); // System.out.println("###end:==" + end); // System.out.println("月份="+myTimeStr(9615000)); // System.out.println(fomatDateToNumber("2014-07-28 14:12:14")); //System.out.println(compareDate("2014-08-13","2014-08-12")); // System.out.println(getNineRandom()); // System.out.println("222="+dateDiffStr("2014-06-11 00:00:00","2014-06-25 23:59:59")); // System.out.println("getUTCTimeStr()=="+DateUtil.currentTimeDiffToHour("2015-01-22 18:12:59")); //System.out.println(DateUtil.dateDiff("2015-09-02 09:55:14",DateUtil.dateToString(new Date()))); System.out.println(DateUtil.currentTimeDiff("2018-07-11 18:00:00")); } /** * 计算今天的剩余秒数 * @return */ public static int getTodaySeconds(){ Calendar cal = Calendar.getInstance(); long start = TimeUnit.MILLISECONDS.toSeconds(cal.getTimeInMillis()); cal.add(Calendar.DAY_OF_YEAR, 1); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); long end = TimeUnit.MILLISECONDS.toSeconds(cal.getTimeInMillis()); return (int) (end - start); } /** * 获取当前分钟 * @return */ public static Integer getNowDateMin(){ Calendar c1 = Calendar.getInstance(); c1.setTime(new Date()); return c1.get(Calendar.MINUTE); } /** * 获取当前day * @return */ public static Integer getNowDateDay(){ Calendar c1 = Calendar.getInstance(); c1.setTime(new Date()); return c1.get(Calendar.DATE); } /** * 获取当前秒 * @return */ public static Integer getNowDateSecond(){ Calendar c1 = Calendar.getInstance(); c1.setTime(new Date()); return c1.get(Calendar.SECOND); } /** * 返回两个日期之间相差天数---只比较天数 * @param fDate * @param oDate * @return */ public static int daysOfTwo(Date fDate, Date oDate) { Calendar aCalendar = Calendar.getInstance(); aCalendar.setTime(fDate); int day1 = aCalendar.get(Calendar.DAY_OF_YEAR); aCalendar.setTime(oDate); int day2 = aCalendar.get(Calendar.DAY_OF_YEAR); return Math.abs(day2 - day1); } /** * 把日期格式转换为字符串格式HH:mm:ss * @param date * @return */ public static String dateToStringHMS (Date date){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm:ss"); return simpleDateFormat.format(date); } /** * 把日期格式转换为字符串格式HH:mm * @param date * @return */ public static String dateToStringHM (Date date){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HH:mm"); return simpleDateFormat.format(date); } /** * 把日期格式转换为字符串格式HHmm * @param date * @return */ public static int dateToIntHM (Date date){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("HHmm"); return Integer.parseInt(simpleDateFormat.format(date)); } /** * 指定格式日期往后加多少分钟 * @param format * @param StrDate * @param min * @return */ @SuppressWarnings("static-access") public static String addMin(String format,String StrDate,int min){ Calendar cal = Calendar.getInstance(); SimpleDateFormat sFmt = new SimpleDateFormat(format); cal.setTime(sFmt.parse( (StrDate), new ParsePosition(0))); if (min != 0) { cal.add(cal.MINUTE,min); } return sFmt.format(cal.getTime()); } /** * 指定格式日期往后加多少分钟 * @param date * @param min * @return */ public static Date addMin(Date date,int min){ Calendar cal = Calendar.getInstance(); cal.setTime(date); if (min != 0) { cal.add(Calendar.MINUTE,min); } return cal.getTime(); } /** * HH:mm:ss上加秒 * @param date * @param seconds * @return */ public static String addSecond(Date date, int seconds) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.SECOND, seconds); date =calendar.getTime(); return dateToStringHMS(date); } /** * 产生2位 */ public static String getThreeRandom(){ int random1 = (int) (Math.random() * 900 + 100); String random = String.valueOf(random1); return random; } /** * 把日期格式转换为字符串格式yyyy-MM-dd * @param * @return */ public static String dateToStringYMD (){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(new Date()); } /** * 把日期格式转换为字符串格式yyyy-MM-dd * @param * @return */ public static String dateToStringYMD (Date data){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.format(data); } /** * String类型时间转为Timestamp,str与format必须格式一致 * * @param str * @param * @return */ public static Timestamp str2Timestamp(String str) { Timestamp ts = null; try { if (null != str && !"".equals(str)) { DateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); ts = new Timestamp(sdf.parse(str).getTime()); } } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } return ts; } /** * Date类型时间转为String格式,format为需要返回的格式 * * @param * @param * @return */ public static String timeStamp2Str(Date dateTime) { /*SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); try { date = oldFormat.parse(dateTime); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }*/ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS"); return sdf.format(dateTime); } /** * 获取一个月的天数 * @param year * @param month * @return */ public static int dateToString (String year,String month){ Calendar c= Calendar.getInstance(); c.set(Calendar.YEAR, Integer.parseInt(year)); c.set(Calendar.MONTH, Integer.parseInt(month)+1); return c.getActualMaximum(Calendar.DAY_OF_MONTH); } /** * 把日期格式转换为字符串格式 * @param date * @return */ public static String dateToString (Date date){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return simpleDateFormat.format(date); } /** * 把日期格式转换为字符串格式 * @param date * @return */ public static String dateToString (Date date,String dateFormat){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); return simpleDateFormat.format(date); } /** * 把日期格式转换为YYMMDDHHMMSS格式 * @param * @return */ public static String dateToNumber (String time){ SimpleDateFormat oldFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat newFormat = new SimpleDateFormat("yyMMddHHmmss"); Date date = new Date(); try { date = oldFormat.parse(time); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return newFormat.format(date); } /** * 根据有效期格式化时间 * @param type 1每年 2 每月 3 每天 4 每小时 5 每分钟 * @param time yyMMddHHmmss * @return */ public static String termvalidityFormat(int type,String time){ String retime = null; try { if(type == 1){ retime = "00"+time.substring(2, time.length()); }else if(type == 2){ retime = "0000"+time.substring(4, time.length()); }else if(type == 3){ retime = "000000"+time.substring(6, time.length()); }else if(type == 4){ retime = "00000000"+time.substring(8, time.length()); }else if(type == 5){ retime = "0000000000"+time.substring(10, time.length()); }else { retime = time; } } catch (Exception e) { e.printStackTrace(); } return retime; } /** * 把原始字符串扩展成自定的长度 * @param oriStr 原始字符串 * @param fillChar 要填充的字符 * @param setLength 要扩展成的长度 * @param preFill 前扩充还是后扩充 true-在前面填充,false-后面填充 * @return */ public static String fixStringToSetLength(String oriStr, String fillChar, int setLength, boolean preFill) { if(oriStr == null || fillChar.equals("")) { return oriStr; } int oriLength = oriStr.length(); StringBuilder sb = null; if(preFill == true) { sb = new StringBuilder(); for(int i = oriLength; i < setLength; i++) { sb.append(fillChar); } sb.append(oriStr); } else { sb = new StringBuilder(oriStr); for(int i = oriLength; i < setLength; i++) { sb.append(fillChar); } } return sb.toString(); } //日期往后加多少个月,多少天,多少年 @SuppressWarnings("static-access") public static String addMonth(String format,String StrDate,int year,int month,int day){ Calendar cal = Calendar.getInstance(); SimpleDateFormat sFmt = new SimpleDateFormat(format); cal.setTime(sFmt.parse( (StrDate), new ParsePosition(0))); if (day != 0) { cal.add(cal.DATE,day); } if (month != 0) { cal.add(cal.MONTH, month); } if (year != 0) { cal.add(cal.YEAR, year); } return sFmt.format(cal.getTime()); } /** * 在当前时间增加或减少N个小時 * @param * @param month * @return */ public static Date addHour(int hour){ Calendar cal = Calendar.getInstance(); cal.add( Calendar.HOUR, hour); return cal.getTime(); } /** * 在当前时间增加或减少N个月 * @param * @param month * @return */ public static Date addMonth(int month){ Calendar cal = Calendar.getInstance(); cal.add( Calendar.MONTH, month); return cal.getTime(); } /** * 增加days天 * @param date * @param days * @return */ public static Date addDays(Date date ,int days){ Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.DAY_OF_MONTH, days); return cal.getTime(); } /** * 判断两个时间字符串之差 * @param date1 * @param date2 * @return 毫秒数 */ public static Long dateDiff(String date1,String date2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return df.parse(date1).getTime() - df.parse(date2).getTime(); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 判断两个指定格式时间字符串之差 * @param format * @param date1 * @param date2 * @return 毫秒数 */ public static Long dateDiff(String format,String date1,String date2) { DateFormat df = new SimpleDateFormat(format); try { return df.parse(date1).getTime() - df.parse(date2).getTime(); } catch (ParseException e) { e.printStackTrace(); } return null; } /** * 计算时间差,相差多少天、小时、分、秒 * @param stime * @param etime * @return */ public static String dateDiffStr(String stime,String etime){ String diff = ""; try { SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date begin=dfs.parse(stime); java.util.Date end = dfs.parse(etime); long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒 long day1=between/(24*3600); long hour1=between%(24*3600)/3600; long minute1=between%3600/60; long second1=between%60; System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒"); if(day1>0){ diff = ""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒"; return diff; } if(hour1>0){ diff = ""+hour1+"小时"+minute1+"分"+second1+"秒"; return diff; } if(minute1>0){ diff = ""+minute1+"分"+second1+"秒"; return diff; } if(second1>=0){ diff = ""+second1+"秒"; return diff; } return diff; } catch (Exception e) { e.printStackTrace(); } return diff; } /** * 和当前时间差 * @param date * @return 当前时间 - date 毫秒数 */ public static Long currentTimeDiff(String date) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { return System.currentTimeMillis() - df.parse(date).getTime(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 和当前时间差 * @param date * @return 当前时间 - date 返回相差小时 */ public static int currentTimeDiffToHour(String date) { if(date == null || date.equals("")){ return 25; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Long longss = System.currentTimeMillis() - df.parse(date).getTime(); int hour = Integer.parseInt(longss/(1000*3600)+""); return hour; } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 25; } /** * 和当前时间差 分钟 * @param date * @return 当前时间 - 返回分钟 */ public static int currentTimeDiffToMin(String date) { if(date == null || date.equals("")){ return 25; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Long longss = System.currentTimeMillis() - df.parse(date).getTime(); int hour = Integer.parseInt(longss/(1000*60)+""); return hour; } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return 0; } /** * 和当前时间差(不需要时分秒) * @param date * @return 当前时间 - date * * */ public static Long currentTimeDiff2(String date) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { return System.currentTimeMillis() - df.parse(date).getTime(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } /** * 日期比较 * @param DATE1 * @param DATE2 * @return DATE1 > DATE2 返回1 */ public static int compare_date(String DATE1, String DATE2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { Date dt1 = df.parse(DATE1); Date dt2 = df.parse(DATE2); if (dt1.getTime() > dt2.getTime()) { return 1; } else if (dt1.getTime() < dt2.getTime()) { return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; } /** * 日期比较 * @param DATE1 * @param DATE2 * @return DATE1 > DATE2 返回1 */ public static int compareDate(String DATE1, String DATE2) { if(DATE1 == null || DATE1.equals("")){ return -1; } if(DATE2 == null || DATE2.equals("")){ return 1; } if(DATE1.equals(DATE2)){ return 0; } DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date dt1 = df.parse(DATE1); Date dt2 = df.parse(DATE2); if (dt1.getTime() > dt2.getTime()) { return 1; } else if (dt1.getTime() < dt2.getTime()) { return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; } /** * 日期比较 * @param DATE1 * @param DATE2 * @return DATE1 > DATE2 返回1 */ public static int compareDate(String DATE1, String DATE2,String formate) { if(DATE1 == null || DATE1.equals("")){ return -1; } if(DATE2 == null || DATE2.equals("")){ return 1; } if(DATE1.equals(DATE2)){ return 0; } DateFormat df = new SimpleDateFormat(formate); try { Date dt1 = df.parse(DATE1); Date dt2 = df.parse(DATE2); if (dt1.getTime() > dt2.getTime()) { return 1; } else if (dt1.getTime() < dt2.getTime()) { return -1; } else { return 0; } } catch (Exception exception) { exception.printStackTrace(); } return 0; } /** * 将日期yyyy-MM-dd HH:mm:ss 格式化为 yyyyMMddHHmmss * @param date * @return */ public static String fomatDate(String date){ String dateStr = null; if(date == null || "".equals(date)){ dateStr = ""; }else{ try { dateStr = date.replaceAll(":", "").replaceAll("-", "").replaceAll(" ", ""); } catch (Exception e) { e.printStackTrace(); } } return dateStr; } /** * 获取插入数据库格式的时间 * @return */ public static String getSQLDate() { String systemdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(Calendar.getInstance().getTime()); // 获取系统当前时间 return systemdate; } /** * 字符串转日期 yyyy-MM-dd HH:mm:ss * @param date * @return */ public static Date getStringToDate(String date){ if (StringUtils.isEmpty(date)) { return null; } Date date2 = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); try { date2 = simpleDateFormat.parse(date); } catch (ParseException e) { e.printStackTrace(); } return date2; } /** * 字符串转日期 yyyy-MM-dd HH:mm:ss * @param date * @return */ public static Date getStringToDate(String date,String format){ Date date2 = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); try { date2 = simpleDateFormat.parse(date); } catch (ParseException e) { e.printStackTrace(); } return date2; } /** * 获取插入数据库格式的时间yyyy-MM-dd * @return */ public static String getSQLDateYMD() { String systemdate = new SimpleDateFormat("yyyy-MM-dd") .format(Calendar.getInstance().getTime()); // 获取系统当前时间 return systemdate; } public static Integer getSQLDateMonth() { String systemdate = new SimpleDateFormat("MM") .format(Calendar.getInstance().getTime()); // 获取系统当前时间 return Integer.parseInt(systemdate); } /** * 对月份进行加减 * @param i * @return * @throws ParseException */ public static Date datePlusOrMinus(String systime ,Integer i) throws ParseException{ DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date systDate =df.parse(systime); GregorianCalendar gc =new GregorianCalendar(); gc.setTime(systDate); gc.add(2,i); return gc.getTime(); } /** * 得到月日时分秒10位时间戳字符串 */ public static String getTenTimestamp() { String systemdate = new SimpleDateFormat("MMddHHmmss").format(Calendar.getInstance().getTime()); return systemdate; } /** * 得到年月日 */ public static String getDateTime() { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd"); String systemdate = sdf.format(Calendar.getInstance().getTime()); return systemdate.substring(0, systemdate.length()); } /** * 得到16位时间戳字符串,前面14位年月日时分秒,第15位毫秒,第16位随机数 */ public static String getUniqueTimestamp() { SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmmssSSS"); String systemdate = sdf.format(Calendar.getInstance().getTime()); return systemdate.substring(0, systemdate.length()-2)+getOneRandom(); } /** * 产生6位随机数 */ public static String getSixRandom(){ int random1 = (int) (Math.random() * 900000 + 100000); String random = String.valueOf(random1); return random; } /** * 产生4位随机数 */ public static String getFourRandom(){ int random1 = (int) (Math.random() * 9000 + 1000); String random = String.valueOf(random1); return random; } /** * 产生2位随机数 */ public static String getTwoRandom(){ int random1 = (int) (Math.random() * 90 + 10); String random = String.valueOf(random1); return random; } /** * 产生1位随机数 */ public static String getOneRandom(){ int random1 = (int) (Math.random() * 9 + 1); String random = String.valueOf(random1); return random; } /** * 产生2位小于60的随机数 */ public static String getTwoRandomSixth(){ int random1 = (int) (Math.random() * 90 + 10); String random = String.valueOf(random1); return random; } /** * 产生-10——10之间的数字 * @return */ public static Integer randomZF(){ int a=(int)(Math.random()*2+1); //System.out.println(a); int aa=(int)(Math.pow(-1, a)); //System.out.println(aa); int aaa=(int)(Math.random()*10+1); int num=aa*aaa; //System.out.println(num); return num; } /** * 计算两个日期之间相差的月数 * * @param date1 * @param date2 * @return */ public static int getMonths(Date date1, Date date2) { int iMonth = 0; int flag = 0; try { Calendar objCalendarDate1 = Calendar.getInstance(); objCalendarDate1.setTime(date1); Calendar objCalendarDate2 = Calendar.getInstance(); objCalendarDate2.setTime(date2); if (objCalendarDate2.equals(objCalendarDate1)) return 0; if (objCalendarDate1.after(objCalendarDate2)) { Calendar temp = objCalendarDate1; objCalendarDate1 = objCalendarDate2; objCalendarDate2 = temp; } if (objCalendarDate2.get(Calendar.DAY_OF_MONTH) < objCalendarDate1 .get(Calendar.DAY_OF_MONTH)) flag = 1; if (objCalendarDate2.get(Calendar.YEAR) > objCalendarDate1 .get(Calendar.YEAR)) iMonth = ((objCalendarDate2.get(Calendar.YEAR) - objCalendarDate1 .get(Calendar.YEAR)) * 12 + objCalendarDate2.get(Calendar.MONTH) - flag) - objCalendarDate1.get(Calendar.MONTH); else iMonth = objCalendarDate2.get(Calendar.MONTH) - objCalendarDate1.get(Calendar.MONTH) - flag; } catch (Exception e) { e.printStackTrace(); } return iMonth; } /** * 计算两个日期之间相差的天数 * * @param date1 * @param date2 * @return */ public static final int daysBetween(Date date1, Date date2) { java.util.Calendar time1 = java.util.Calendar.getInstance(); java.util.Calendar time2 = java.util.Calendar.getInstance(); time1.setTime(date1); time2.setTime(date2); int days = 0; if(time1.getTime().getTime() >= time2.getTime().getTime()){ days = ((int) (time1.getTime().getTime() / 1000) - (int) (time2.getTime().getTime() / 1000)) / 3600 / 24; }else{ days = ((int) (time2.getTime().getTime() / 1000) - (int) (time1.getTime().getTime() / 1000)) / 3600 / 24; } return days; } /** * 计算两个日期之间相差秒 * * @param sdate1 * @param sdate2 * @return */ public static final int secBetween(String sdate1, String sdate2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date1 = null; try { date1 = df.parse(sdate1); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } Date date2 = null; try { date2 = df.parse(sdate2); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } java.util.Calendar time1 = java.util.Calendar.getInstance(); java.util.Calendar time2 = java.util.Calendar.getInstance(); time1.setTime(date1); time2.setTime(date2); int sec = 0; if(time1.getTime().getTime() >= time2.getTime().getTime()){ sec = ((int) (time1.getTime().getTime() / 1000) - (int) (time2.getTime().getTime() / 1000)); }else{ sec = ((int) (time2.getTime().getTime() / 1000) - (int) (time1.getTime().getTime() / 1000)); } return sec; } /** * * @param date1 * @param date2 * @return int * @throws ParseException */ public static int getMonthSpace(String date1, String date2) throws ParseException { int result = 0; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar c1 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c1.setTime(sdf.parse(date1)); c2.setTime(sdf.parse(date2)); result = c2.get(Calendar.MONTH) - c1.get(Calendar.MONTH); return result == 0 ? 1 : Math.abs(result); } /** * 根据毫秒数计算时分秒 * @param timeMillis * @return */ public static String myTimeStr(long timeMillis) { int timezone = 8; long totalSeconds = timeMillis / 1000; totalSeconds += 60 * 60 * timezone; int second = (int)(totalSeconds % 60);// 秒 long totalMinutes = totalSeconds / 60; int minute = (int)(totalMinutes % 60);// 分 long totalHours = totalMinutes / 60; int hour = (int)(totalHours % 24);// 时 int totalDays = (int)(totalHours / 24); int _year = 1970; int year = _year + totalDays / 366; int month = 1; int day = 1; int diffDays; boolean leapYear; while (true) { int diff = (year - _year) * 365; diff += (year - 1) / 4 - (_year - 1) / 4; diff -= ((year - 1) / 100 - (_year - 1) / 100); diff += (year - 1) / 400 - (_year - 1) / 400; diffDays = totalDays - diff; leapYear = (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0); if (!leapYear && diffDays < 365 || leapYear && diffDays < 366) { break; } else { year++; } } int[] monthDays; if (diffDays >= 59 && leapYear) { monthDays = new int[]{-1,0,31,60,91,121,152,182,213, 244, 274, 305, 335 }; } else { monthDays = new int[]{-1,0,31,59,90,120,151,181,212, 243, 273, 304, 334 }; } for (int i = monthDays.length - 1; i >= 1; i--) { if (diffDays >= monthDays[i]) { month = i; day = diffDays - monthDays[i] + 1; break; } } return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second; } /** * 根据秒数计算小时 * @param * @return */ public static String secondToHour(String second) { if(second == null || "".equals(second) || "null".equals(second)){ return null; } Double sec = Double.parseDouble(second); Double hour = sec/3600; DecimalFormat df=new DecimalFormat("0.0"); return df.format(hour).toString(); } /** * 根据秒数计算分钟 * @param * @return */ public static String secondToMinute(String second) { if(second == null || "".equals(second) || "null".equals(second)){ return null; } Double sec = Double.parseDouble(second); Double minute = sec/60; DecimalFormat df=new DecimalFormat("0.0"); return df.format(minute).toString(); } /** * 根据小时数计算秒 * @param * @return */ public static String hourToSecond(String hour) { if(hour == null || "".equals(hour) || "null".equals(hour)){ return null; } DecimalFormat df=new DecimalFormat("0"); return df.format(Double.parseDouble(hour)*3600).toString(); } /** * 根据分钟计算秒 * @param * @return */ public static String MinuteToSecond(String minute) { if(minute == null || "".equals(minute) || "null".equals(minute)){ return null; } DecimalFormat df=new DecimalFormat("0"); return df.format(Double.parseDouble(minute)*60).toString(); } /** * 将日期yyyy-MM-dd HH:mm:ss 格式化为 yyMMddHHmmss * @param date * @return */ public static String fomatDateToNumber(String date){ String dateStr = null; if(date == null || "".equals(date)){ dateStr = ""; }else{ try { dateStr = date.replaceAll(":", "").replaceAll("-", "").replaceAll(" ", ""); dateStr = dateStr.substring(2); } catch (Exception e) { e.printStackTrace(); } } return dateStr; } /** * 把YYMMDDHHMMSS格式转换为date格式 * @param * @return */ public static String numberToDate (String number){ SimpleDateFormat oldFormat = new SimpleDateFormat("yyMMddHHmmss"); SimpleDateFormat newFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); try { date = oldFormat.parse(number); } catch (ParseException e) { e.printStackTrace(); return null; } return newFormat.format(date); } /** * 产生8位HHmmss */ public static String getEightRandom(){ String systemdate = new SimpleDateFormat("HHmmss") .format(Calendar.getInstance().getTime()); // 获取系统当前时间 int random1 = (int) (Math.random() * 90 + 10); String random = String.valueOf(random1); return systemdate + random; } /** * 时间戳转换成时间 * @param time * @return */ public static String TimeStampToDateTime(long time){ String datetime = null; try { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); datetime = sdf.format(new Date(time*1000)); } catch (Exception e) { e.printStackTrace(); } return datetime; } /** * 时间转成时间戳 毫秒 * @param datetime * @return */ public static long DateTimeToTimeStampSS(String datetime){ try { SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date=simpleDateFormat.parse(datetime); long timeStemp = date.getTime(); return timeStemp; } catch (Exception e) { e.printStackTrace(); return 0L ; } } /** * 时间转成时间戳 秒 * @param datetime * @return */ public static long DateTimeToTimeStampS(String datetime){ try { SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date date=simpleDateFormat.parse(datetime); long timeStemp = date.getTime()/1000; return timeStemp; } catch (Exception e) { e.printStackTrace(); return System.currentTimeMillis()/1000 ; } } /** * 转成时间戳 * @param datetime * @return */ public static long NumberTimeToTimeStamp(String datetime){ try { SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyMMddHHmmss"); Date date=simpleDateFormat.parse(datetime); long timeStemp = date.getTime()/1000; return timeStemp; } catch (Exception e) { e.printStackTrace(); return System.currentTimeMillis()/1000 ; } } /** * 得到UTC时间,类型为字符串,格式为"yyyy-MM-dd HH:mm"
* 如果获取失败,返回null * @return */ public static String getUTCTimeStr() { SimpleDateFormat foo = new SimpleDateFormat("yyyy-MM-dd hh:mm"); System.out.println("foo:"+foo.format(new Date())); Calendar gc = GregorianCalendar.getInstance(); System.out.println("gc.getTime():"+gc.getTime()); System.out.println("gc.getTimeInMillis():"+new Date(gc.getTimeInMillis())); //当前系统默认时区的时间: Calendar calendar=new GregorianCalendar(); System.out.print("时区:"+calendar.getTimeZone().getID()+" "); System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)); //美国洛杉矶时区 TimeZone tz=TimeZone.getTimeZone("America/Los_Angeles"); //时区转换 calendar.setTimeZone(tz); System.out.print("时区:"+calendar.getTimeZone().getID()+" "); System.out.println("时间:"+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)); //1、取得本地时间: java.util.Calendar cal = java.util.Calendar.getInstance(); //2、取得时间偏移量: int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET); //3、取得夏令时差: int dstOffset = cal.get(java.util.Calendar.DST_OFFSET); //4、从本地时间里扣除这些差量,即可以取得UTC时间: cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset)); //之后调用cal.get(int x)或cal.getTimeInMillis()方法所取得的时间即是UTC标准时间。 System.out.println("UTC:"+new Date(cal.getTimeInMillis())); Calendar calendar1 = Calendar.getInstance(); TimeZone tztz = TimeZone.getTimeZone("GMT"); calendar1.setTimeZone(tztz); System.out.println(calendar.getTime()); System.out.println("9999:"+calendar.getTimeInMillis()/1000); System.out.println("utc1="+System.currentTimeMillis()/1000); System.out.println("utc="+new Date().getTime()/1000); System.out.println(TimeStampToDateTime(1421724351)); System.out.println("=="+DateTimeToTimeStampS("2015-01-20 11:35:06")); System.out.println(TimeStampToDateTime(DateTimeToTimeStampS("2015-01-20 11:35:06"))); return null; } /** * 获得指定日期的前/后n天,小时 * * @param specifiedDay * @return */ public static String getSpecifiedDayAbove(String specifiedDay,int n,int h) { Calendar c = Calendar.getInstance(); Date date = null; try { date = new SimpleDateFormat("yy-MM-dd HH:mm:ss").parse(specifiedDay); } catch (ParseException e) { e.printStackTrace(); } c.setTime(date); int day = c.get(Calendar.DATE); c.set(Calendar.DATE, day + n); int hour = c.get(Calendar.HOUR); c.set(Calendar.HOUR,hour + h); String dayAfter = new SimpleDateFormat("yy-MM-dd HH:mm:ss") .format(c.getTime()); return dayAfter; } /** * 两个时间的小时差 * @param st * @param ed * @return */ public static long dateSpaceHours(Date st,Date ed){ return (long) Math.ceil((ed.getTime() - st.getTime())/3600000.0); } public static String formatDate(Date date, String format) throws ParseException { DateFormat df = new SimpleDateFormat(format); df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); return df.format(date); } public static Date parseDate(String date, String format) { DateFormat df = new SimpleDateFormat(format); df.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); try { return df.parse(date); } catch (ParseException e) { e.printStackTrace(); } return null; } }