import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;import org.apache.commons.lang3.StringUtils;/*** 时间工具类*/
public class TimeUtils {/*** 得到当前时间* * @return*/public static Timestamp getNow() {return new Timestamp(System.currentTimeMillis());}/*** 获取某日期本周周一的时间* @param date* @return*/public static Timestamp getThisWeekMonday(Date date) {  Calendar cal = Calendar.getInstance();  cal.setTime(date);  // 获得当前日期是一个星期的第几天  int dayWeek = cal.get(Calendar.DAY_OF_WEEK);  if (1 == dayWeek) {  cal.add(Calendar.DAY_OF_MONTH, -1);  }  // 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一  cal.setFirstDayOfWeek(Calendar.MONDAY);  // 获得当前日期是一个星期的第几天  int day = cal.get(Calendar.DAY_OF_WEEK);  // 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值  cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);  return new Timestamp(cal.getTime().getTime());}  /*** 获取某日期下周周一的时间* @param date* @return*/public static Timestamp getNextWeekMonday(Date date) {  Calendar cal = Calendar.getInstance();  cal.setTime(getThisWeekMonday(date));  cal.add(Calendar.DATE, 7);  return new Timestamp(cal.getTime().getTime());}  /*** 获取某日期下个月一号的时间* @param date* @return*/public static Timestamp nextMonthFirstDate(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);  cal.set(Calendar.DAY_OF_MONTH, 1);cal.add(Calendar.MONTH, 1);return new Timestamp(cal.getTime().getTime());}/*** 获取当前日期下个月 一号凌晨零点零分的时间* @param date* @return*/public static Timestamp nextMonthFirstZeroPointDate() {SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");  Calendar calendar = Calendar.getInstance();  calendar.add(Calendar.MONTH, 1);  calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));  String format = dft.format(calendar.getTime());String time=format+" 00:00:00";Timestamp timestamp = Timestamp.valueOf(time);     return timestamp;}// ------------------------------时间格式 Begin------------------------------/*** 格式化时间* * @param date* @param fmt* @return*/public static String format(Date date, String fmt) {if (date == null)return "";DateFormat formatter = new SimpleDateFormat(fmt);return formatter.format(date);}/*** 格式化时间** @param dateTime 时间毫秒值* @param fmt* @return* @author: Mancy*/public static String format(Long dateTime, String fmt) {DateFormat formatter = new SimpleDateFormat(fmt);return formatter.format(dateTime);}/*** 格式化日期* * @param date* @return*/public static String formatDay(Date date) {if(date == null){return null;}return format(date, "yyyy-MM-dd");}/*** 格式化当前日期* * @return*/public static String formatDay() {return format(new Date(System.currentTimeMillis()), "yyyy-MM-dd");}/*** 格式化完整时间 到分* * @param date* @return*/public static String formatMinuteTime(Date date) {if(date == null){return null;}return format(date, "yyyy-MM-dd HH:mm");}/*** 格式化完整时间 到秒** @param date*/public static String formatFullTime(Date date) {if(date == null){return null;}return format(date, "yyyy-MM-dd HH:mm:ss");}/*** 格式化当前时间* * @return*/public static String formatFullTime() {return format(new Date(System.currentTimeMillis()), "yyyy-MM-dd HH:mm:ss");}// ------------------------------时间格式 End------------------------------// ------------------------------转换时间start----------------------------/*** 转换时间* * @param dateStr* @param fmt*/public static Timestamp parse(String dateStr, String fmt) {if (StringUtils.isBlank(dateStr) || StringUtils.isBlank(fmt)) {return null;}DateFormat formatter = new SimpleDateFormat(fmt);try {return new Timestamp(formatter.parse(dateStr).getTime());}catch (ParseException e) {e.printStackTrace();}return null;}/*** 转换日期* * @param dateStr*/public static Timestamp parseDay(String dateStr) {return parse(dateStr, "yyyy-MM-dd");}/*** 转换日期 到时分** @param dateStr*/public static Timestamp parseDayMinute(String dateStr) {return parse(dateStr, "yyyy-MM-dd HH:mm");}/*** 转换完整时间* * @param dateStr*/public static Timestamp parseFullTime(String dateStr) {return parse(dateStr, "yyyy-MM-dd HH:mm:ss");}// ------------------------------转换时间 End------------------------------// ------------------------------时间计算 start------------------------------/*** 加几天* @param date 时间* @param dayNum 要加的天数* @return*/public static Timestamp addDay(Date date, int dayNum) {if (date == null) {return null;}Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.DATE, dayNum);return new Timestamp(cal.getTime().getTime());}/*** 剩余时间* hourNum + date - 当前时间 = 剩余时间* @param date 时间* @param hourNum 几个小时*/public static Timestamp surplusTime(Date date, int hourNum) {return new Timestamp(surplusTimeLong(date, hourNum));}/*** 剩余时间* hourNum + date - 当前时间 = 剩余时间* @param date 时间* @param hourNum 几个小时*/public static long surplusTimeLong(Date date, int hourNum) {if (date == null) {return 0l;}Date nowDate = getNow();Calendar cal = Calendar.getInstance();cal.setTime(date);cal.add(Calendar.HOUR_OF_DAY, hourNum);Date endDate = cal.getTime();int com = endDate.compareTo(nowDate);if (com <= 0) {return 0l;}else {long surplusTimeLong = endDate.getTime() - nowDate.getTime();return surplusTimeLong;}}/***  上个月的第一天    * @return*/public static Timestamp  getfirstDate(){Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01  00:00:00");String gtime2 = sdf2.format(c.getTime()); //上月第一天return  parse(gtime2,"yyyy-MM-dd HH:mm:ss");}/***  上个月的最后一天    * @return*/public static Timestamp  getEndDate(){Calendar c=Calendar.getInstance();c.add(Calendar.MONTH, -1);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss");int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 00, 00, 00);//按格式输出String gtime = sdf.format(c.getTime()); //上月最后一天return  parse(gtime,"yyyy-MM-dd HH:mm:ss");}/*** 获取指定月份下个月的第一天* */public static String getNextMonthFirstDay(String month){String nextMonthFirstDay = null;try {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Date date = dateFormat.parse(month);Calendar calendar = Calendar.getInstance();calendar.setTime(date); calendar.add(Calendar.MONTH, 1);SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));  nextMonthFirstDay = sdf.format(calendar.getTime());} catch (Exception e) {e.printStackTrace();}return nextMonthFirstDay;}public static String getLastDayOfMonth(String yearMonth) {int year = Integer.parseInt(yearMonth.split("-")[0]);  //年int month = Integer.parseInt(yearMonth.split("-")[1]); //月Calendar cal = Calendar.getInstance();cal.set(Calendar.YEAR, year);cal.set(Calendar.MONTH, month); //设置当前月的上一个月int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天// 格式化日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(cal.getTime());}/*** 通过时间秒毫秒数判断两个时间的间隔* @param date1* @param date2    * @return*/public static int differentDays(Date date1,Date date2){int days = (int) ((date1.getTime() - date2.getTime()) / (1000*3600*24));return days;}/*** 格式化日期到月* * @param date* @return*/public static String formatMonth(Date date) {return format(date, "yyyy-MM");}/*** 格式化日期到月* * @param date* @return*/public static String formatMonthForStr(String dateStr) {try {SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间SimpleDateFormat formatMonth=new SimpleDateFormat("yyyy-MM"); //加上时间Date date=sDateFormat.parse(dateStr);return formatMonth.format(date);} catch (Exception e) {e.printStackTrace();}return null;}/*** 格式化日期到日* * @param date* @return*/public static String formatToDay(String dateStr) {try {SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间SimpleDateFormat formatMonth=new SimpleDateFormat("yyyy-MM-dd"); //加上时间Date date=sDateFormat.parse(dateStr);return formatMonth.format(date);} catch (Exception e) {e.printStackTrace();}return null;}/***   字符串转日期类型* @param strDate* @return* @throws Exception*/public  static java.sql.Date strToSqlDate(String strDate){String str = strDate;SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");Date date=null;java.sql.Date sqlDate = null;try {date = format.parse(str);sqlDate = new java.sql.Date(date.getTime());} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return sqlDate;}// ------------------------------时间计算 end------------------------------/*** 获取上个月份    * @param date* @return*/public static String getLastMonth(Date date){    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(date); // 设置为当前时间calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月date = calendar.getTime();return  dateFormat.format(date);}/*** 获取上个月份    * @param date* @return* @throws ParseException */public static String getUpMonth(String month) throws ParseException{    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Date date = dateFormat.parse(month);Calendar calendar = Calendar.getInstance();calendar.setTime(date); // 设置为当前时间calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月date = calendar.getTime();return  dateFormat.format(date);}/*** 获取下个月份    * @param date* @return*/public static String getNextMonth(Date date){    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(date); // 设置为当前时间calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) +1); // 设置为上一个月date = calendar.getTime();return  dateFormat.format(date);}/*** 获取下下个月份    * @param date* @return*/public static String getNextDownMonth(Date date){    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(date); // 设置为当前时间calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) +2); // 设置为上一个月date = calendar.getTime();return  dateFormat.format(date);}/*** 获取系统当前时间前一天日期近二个月的月份 * @return* @throws ParseException */public static String getLastTwoMonthsByNow() throws ParseException{   SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(new Date()); // 设置为当前时间calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1); // 设置为前一天Date date = calendar.getTime();String monthOne = dateFormat.format(date);//当前月String monthTwo = getUpMonth(monthOne);//上月String months = monthTwo+","+monthOne;return months;}/*** 获取系统当前时间前N月的月份* @return num 前N月* @throws ParseException*/public static String getAgoMonthByNow(int num) {if(num<1) return null;SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");Calendar calendar = Calendar.getInstance();calendar.setTime(new Date()); // 设置为当前时间calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - num); //减N月Date date = calendar.getTime();String month = dateFormat.format(date);//当前月return month;}/**   * 计算两个日期之间相差的天数   * @param date1   * @param date2   * @return   */    public static int daysBetween(Date date1,Date date2){try {SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String date1Str = dateFormat.format(date1);String date2Str = dateFormat.format(date2);SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");date1 = dateFormat2.parse(date1Str);date2 = dateFormat2.parse(date2Str);} catch (Exception e) {}Calendar cal = Calendar.getInstance();     cal.setTime(date1);     long time1 = cal.getTimeInMillis();                  cal.setTime(date2);     long time2 = cal.getTimeInMillis();          long between_days=(time2-time1)/(1000*3600*24);     return Integer.parseInt(String.valueOf(between_days));            }  /*** 时间比较大小* @param date1* @param date2* @return 1 date1>date2 */public static String timeComparisonSize (Timestamp date1,Timestamp date2){if (date1.getTime()>date2.getTime()) {return "1";}else {return "0";}}/*** 传入开始时间 和结束时间 返回 开始时间和结束时间段内的每一天数据 (包含开始时间和结束时间)*/public static  List<String>  getYearMonthDateList(String startTime,String endTime ){          List<String> result = new ArrayList<String>();Date d1;try {d1 = new SimpleDateFormat("yyyy-MM-dd").parse(startTime);Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(endTime);//定义结束日期Calendar dd = Calendar.getInstance();//定义日期实例dd.setTime(d1);//设置日期起始时间while(dd.getTime().before(d2)||dd.getTime().equals(d2)){//判断是否到结束日期SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");String str = sdf.format(dd.getTime());result.add(str);dd.add(Calendar.DATE, 1);               }} catch (ParseException e) {return null;}//定义起始日期return result;} /*** 传入一个时间 和 之后的天数(只算工作日) 得出最后的工作日日期 * @param startTime 开始时间* @param afterDay 向后加的工作日时间* @return*/public static String getAfterDay(Timestamp startTime, int afterDay){Calendar dd = Calendar.getInstance();//定义日期实例dd.setTime(startTime);//设置日期起始时间for (int i = 0; i < afterDay; i++) {            if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.FRIDAY) {dd.add(Calendar.DATE, 3);}else if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {dd.add(Calendar.DATE, 2);}else {dd.add(Calendar.DATE, 1);  }           }SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  return sdf.format(dd.getTime());       }/***  传入一个时间 和 之前的天数(只算工作日) 得出最之前的工作日日期 * @param startTime* @param beforeDay* @return*/public static String getBeforeDay(Timestamp startTime, int beforeDay){Calendar dd = Calendar.getInstance();//定义日期实例dd.setTime(startTime);//设置日期起始时间for (int i = 0; i < beforeDay; i++) {           if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY) {dd.add(Calendar.DATE, -3);}else if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {dd.add(Calendar.DATE, -2);}else {dd.add(Calendar.DATE, -1); }           }      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return  sdf.format(dd.getTime());}/*** 两个时间比较 如果第一个时间大于等于第二个时间 返回true 其他返回false* @param dataStr1* @param dataStr2* @param fmt* @return*/public static boolean dateStrComparison(String dataStr1,String dataStr2,String fmt){       try {DateFormat dateFormat = new SimpleDateFormat(fmt);boolean b=dateFormat.parse(dataStr1).getTime()>=dateFormat.parse(dataStr2).getTime();return b;                  } catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return false;}/*** 失效日期和当前时间 比较判断是否过期  过期返回 0过期,未过期返回1* * @return*/public static String  isNotIsExpire(Timestamp overdueDate){  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String overdueDateStr = format.format(overdueDate);// 失效日期年月日Timestamp overdueTimestamp= Timestamp.valueOf(overdueDateStr+" 00:00:00");// 失效日期 转成 当前时间00:00:00Date date = new Date();// 新建此时的的系统时间String isExpire=null;// 是否过期(0是 1否)if (overdueTimestamp.getTime()>date.getTime()) {isExpire="1";// 未过期}else {isExpire="0";// 已过期}          return isExpire;}/*** 失效日期和当前时间 比较判断是否过期  过期返回 0过期,未过期返回1** @return*/public static String isNotIsExpireByDate(Date overdueDate){Date date = new Date();// 新建此时的的系统时间String isExpire=null;// 是否过期(0是 1否)if (overdueDate.getTime()>date.getTime()) {isExpire="1";// 未过期}else {isExpire="0";// 已过期}return isExpire;}/*** 解析bootstrat 时间插件格式* @param s* @return*/public static List<Long> parse(String s){try{List<Long> timestampList=new ArrayList<Long>();String[] dateArrays=s.split("-");SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");timestampList.add(sdf.parse(dateArrays[0]).getTime());timestampList.add(sdf.parse(dateArrays[1]).getTime()+1000*60*60*24);return timestampList;}catch(Exception e){return null;}}/*** 解析bootstrat 时间插件格式* @param* @return*/public static List<String> parseToString(String s){try{List<String> list=new ArrayList<String>();String[] dateArrays=s.split("-");SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");list.add(sdf2.format(sdf.parse(dateArrays[0].trim()))+" 00:00:00");list.add(sdf2.format(sdf.parse(dateArrays[1].trim()))+" 23:59:59");return list;}catch(Exception e){return null;}}/*** 获取某个日期的开始时间* @param d* @return*/public static Timestamp getDayStartTime(Date d) {Calendar calendar=Calendar.getInstance();if(null!=d){calendar.setTime(d);}calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),   calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);calendar.set(Calendar.MILLISECOND, 0);return new Timestamp(calendar.getTimeInMillis());}/*** 获取某个日期的结束时间* @param d* @return*/public static Timestamp getDayEndTime(Date d) {Calendar calendar=Calendar.getInstance();if(null!=d){calendar.setTime(d);}calendar.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),   calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);calendar.set(Calendar.MILLISECOND, 999);return new Timestamp(calendar.getTimeInMillis());}/*** 获取上周开始时间*/@SuppressWarnings("unused")public static Date getBeginDayOfLastWeek() {Date date=new Date();if (date==null) {return null;}Calendar cal=Calendar.getInstance();cal.setTime(date);int dayofweek=cal.get(Calendar.DAY_OF_WEEK);if (dayofweek==1) {dayofweek+=7;}cal.add(Calendar.DATE, 2-dayofweek-7);return getDayStartTime(cal.getTime());}/*** 获取上周的结束时间* @return*/public static Date getEndDayOfLastWeek(){Calendar cal=Calendar.getInstance();cal.setTime(getBeginDayOfLastWeek());cal.add(Calendar.DAY_OF_WEEK, 6);Date weekEndSta = cal.getTime();return getDayEndTime(weekEndSta);}/*** 获取今年是哪一年* @return*/public static Integer getNowYear(){Date date = new Date();GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance();gc.setTime(date);return Integer.valueOf(gc.get(1));}/*** 获取本月是哪一月* @return*/public static int getNowMonth() {Date date = new Date();GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance();gc.setTime(date);return gc.get(2) + 1;}/*** 获取上月的开始时间* @return*/public static Date getBeginDayOfLastMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-2, 1);return getDayStartTime(calendar.getTime());}/*** 获取上月的结束时间* @return*/public static Date getEndDayOfLastMonth() {Calendar calendar=Calendar.getInstance();calendar.set(getNowYear(), getNowMonth()-2, 1);int day = calendar.getActualMaximum(5);calendar.set(getNowYear(), getNowMonth()-2, day);return getDayEndTime(calendar.getTime());}/*** 获取当前日期是星期几* * @param date* @return 当前日期是星期几*/public static String getWeekOfDate(Date date) {String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };Calendar cal = Calendar.getInstance();cal.setTime(date);int w = cal.get(Calendar.DAY_OF_WEEK) - 1;if (w < 0)w = 0;return weekDays[w];}/*** 获取当前时间前5小时* @param date* @return*/public static String getFiveHoursAgoDate() {Calendar calendar = Calendar.getInstance();calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 5);return  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());}/*** 将字符串时间格式转换成Date时间格式,参数String类型* 比如字符串时间:"2017-12-15 21:49:03"* 转换后的date时间:Fri Dec 15 21:49:03 CST 2017* @param datetime 类型为String* @return*/public static Date StringToDate(String datetime){/*if (StringUtils.isEmpty(datetime)) {return null;            }*/SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");Date date = null;try {date = sdFormat.parse(datetime);} catch (ParseException e) {e.printStackTrace();}if (date==null) {try {date=format.parse(datetime);} catch (ParseException e) {e.printStackTrace();}           }if (date==null) {throw new RuntimeException("日期为空日期转化失败");}return date;}/*** 获取当前月第一天*/public static String getCurrentMonthFirstDay() {SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();   c.add(Calendar.MONTH, 0);c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天String first = format.format(c.getTime());return first ;}/*** 判断是否是在2到10号*/public static boolean  isOrNotContainDay() {SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat monthFormat=new SimpleDateFormat("yyyy-MM");     Calendar c = Calendar.getInstance();String nowDate = format.format(c.getTime());String monthDate = monthFormat.format(c.getTime());List<String> dataList=new ArrayList<>();dataList.add(monthDate+"-02");dataList.add(monthDate+"-03");dataList.add(monthDate+"-04");dataList.add(monthDate+"-05");dataList.add(monthDate+"-06");dataList.add(monthDate+"-07");dataList.add(monthDate+"-08");dataList.add(monthDate+"-09");dataList.add(monthDate+"-10");if (dataList.contains(nowDate)) {return true ;}else {return false ;}}/*** 三个日期都是年月日* 获取逾期天数* @return*/public static int getOverdueDay(String dateStr1,String dateStr2,int day){Timestamp date1 = Timestamp.valueOf(dateStr1+" 00:00:00");Timestamp date2 = Timestamp.valueOf(dateStr2+" 00:00:00");        Long betweendays=(date1.getTime()-date2.getTime())/(1000*3600*24);     int dayNum=betweendays.intValue()-day;     return dayNum;};/*** 判断是否yyyy-MM-dd HH:mm:ss* @param date* @return*/public static boolean isDate(String date) {Pattern p = Pattern.compile("^([1-2]{1}\\d{3})\\-(([0]{1}[1-9]{1})|([1]{1}[0-2]{1}))\\-(([0]{1}[1-9]{1})|([1-2]{1}\\d{1})|([3]{1}[0-1]{1}))\\s(([0-1]{1}\\d{1})|([2]{1}[0-3]))\\:([0-5]{1}\\d{1})\\:([0-5]{1}\\d{1})$");return p.matcher(date).matches();}/*** 判断时间格式 格式必须为“YYYY-MM-dd”* @param sDate* @return*/public static boolean isYmdDate(String sDate) {int legalLen = 10;if ((sDate == null) || (sDate.length() != legalLen)) {return false;}DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");try {Date date = formatter.parse(sDate);return sDate.equals(formatter.format(date));} catch (Exception e) {return false;}}
}

超详细的Java常用时间操作工具类相关推荐

  1. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils;import java.text.ParseException; import j ...

  2. java常用时间工具类

    /*** LocalDateTime工具类** @author Code13* @date 2019-11-10 21:10*/ public final class LocalDateTimeUti ...

  3. 超详细的Java面试题总结(三)之Java集合篇常见问题

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 List,Set,Map三者的区别及总结 List:对付顺序的好帮手 Li ...

  4. 超详细的Java面试题总结(四 )之JavaWeb基础知识总结

    系列文章请查看: 超详细的Java面试题总结(一)之Java基础知识篇 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java ...

  5. 超详细的Java面试题总结(二)之Java基础知识篇

    系列文章: 超详细的Java面试题总结(一)之Java基本知识 超详细的Java面试题总结(二)之Java基础知识篇 超详细的Java面试题总结(三)之Java集合篇常见问题 超详细的Java面试题总 ...

  6. 超详细的Java面试题总结之JavaWeb基础知识总结

    超详细的Java面试题总结之JavaWeb基础知识总结 Java互联网架构师08-29 16:01 打开网易新闻 查看更多精彩图片 Servlet总结: 在Java Web程序中,Servlet主要负 ...

  7. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  8. java.util类,GitHub - yutaolian/JavaUtils: 总结的一些Java常用的util类

    JavaUtils 总结的一些Java常用的util类 ###1.格式化时间 SimpleDateFormat(DateFormat)实现线程安全的使用 众所周知SimpleDateFormat(Da ...

  9. MyBatis超详细介绍——SQL语句构建器类

    MyBatis超详细介绍--SQL语句构建器类 (本文作为学习笔记,了解更多请参考:MyBatis参考文档) MyBatis3提供了SQL类帮助构造SQL语句: private String sele ...

最新文章

  1. 【每周CV论文】深度学习图像降噪应该从阅读哪些文章开始
  2. lazada的产品搜索排名有哪些影响因素,怎样做排名优化提升?
  3. AI理论知识整理(10)-向量空间与矩阵(1)
  4. BZOJ5212 ZJOI2018历史(LCT)
  5. linux7.3安装oracle12c release2
  6. IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决
  7. jQuery实现两个列表框的值之间的互换:
  8. LeetCode 962. 最大宽度坡(单调栈)
  9. 股价暴跌 特斯拉市值周四蒸发上千亿美元
  10. 自定义checkbox大小(注:用CSS的ZOOM属性 )
  11. c#连接kafka_c#操作kafka(上)搭建kafka环境
  12. 第八章第二层交换和生成树协议(STP)
  13. 【51单片机】通过定时器中断 在8位数码管显示时间
  14. w10控制面板卸载java_手把手教你解决Win10控制面板无法卸载软件的问题
  15. LeetCode部分刷题笔记!!!JavaScript!!!
  16. 惠普光影精灵拆机换屏幕_惠普光影精灵3换电池小记
  17. 美团饿了么外卖红包cps赚钱小程序源码
  18. python findall函数
  19. 教师资格证 中学科目二 简答/辨析/材料 知识点与口诀
  20. java丐帮_Java多线程学习笔记(一)

热门文章

  1. SQL批量修改字段值
  2. 点滴积累【JS】---JS小功能(setInterval实现图片效果显示时间)
  3. oracle 按照周 分组
  4. React入门系列 - 5. 表单与变量的关联
  5. dubbo相关的知识点总结
  6. CodeForces 645B Mischievous Mess Makers
  7. SQL Server 2008 缩小数据库日志
  8. 分布式系统设计注意点
  9. 关于PHP5.3作废函数的处理方法
  10. 从高铁事故到软件系统的可靠性