各种时间日期工具类
来源:互联网 发布:qq堂mac版官方下载 编辑:程序博客网 时间:2024/05/20 15:56
package util;import java.math.BigDecimal;import java.math.RoundingMode;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;public class DateUtil { private static Log log = LogFactory.getLog(DateUtil.class); private final static SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy"); private final static SimpleDateFormat sdfDay = new SimpleDateFormat( "yyyy-MM-dd"); private final static SimpleDateFormat sdfDays = new SimpleDateFormat( "yyyyMMdd"); private final static SimpleDateFormat sdfTime = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); /** 日期格式:"yyyy-MM-dd HH:mm:ss" **/ public static final String DATE_TIME_FORMAT_19 = "yyyy-MM-dd HH:mm:ss"; /** 日期格式:"yyyyMMddHHmmss" **/ public static final String DATE_TIME_FORMAT_14 = "yyyyMMddHHmmss"; /** * 获取YYYY格式 * * @return */ public static String getYear() { return sdfYear.format(new Date()); } /** * 获取YYYY-MM-DD格式 * * @return */ public static String getDay() { return sdfDay.format(new Date()); } public static String getDay(Date date) { return sdfDay.format(date); } /** * 获取YYYYMMDD格式 * * @return */ public static String getDays(){ return sdfDays.format(new Date()); } /** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */ public static String getTime() { return sdfTime.format(new Date()); } /** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */ public static String getTime(Date date,String format) { SimpleDateFormat timeFormat = new SimpleDateFormat(format); return timeFormat.format(date); } /** * @Title: compareDate * @Description: (日期比较,如果s>=e 返回true 否则返回false) * @param s * @param e * @return boolean * @throws * @author luguosui */ public static boolean compareDate(String s, String e) { if(fomatDate(s)==null||fomatDate(e)==null){ return false; } return fomatDate(s).getTime() >=fomatDate(e).getTime(); } /** * 格式化日期 * * @return */ public static Date fomatDate(String date) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 格式化日期 * * @return */ public static Date fomatDate(String date,String format) { DateFormat fmt = new SimpleDateFormat(format); try { return fmt.parse(date); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 校验日期是否合法 * * @return */ public static boolean isValidDate(String s) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { fmt.parse(s); return true; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return false; } } public static int getDiffYear(String startTime,String endTime) { DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd"); try { int years=(int) (((fmt.parse(endTime).getTime()-fmt.parse(startTime).getTime())/ (1000 * 60 * 60 * 24))/365); return years; } catch (Exception e) { // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对 return 0; } } /** * <li>功能描述:时间相减得到天数 * @param beginDateStr * @param endDateStr * @return * long * @author Administrator */ public static long getDaySub(String beginDateStr,String endDateStr,String formatStr){ long day=0; java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(formatStr); java.util.Date beginDate = null; java.util.Date endDate = null; try { beginDate = format.parse(beginDateStr); endDate= format.parse(endDateStr); day=(endDate.getTime()-beginDate.getTime())/(24*60*60*1000); } catch (ParseException e) { e.printStackTrace(); } //System.out.println("相隔的天数="+day); return day; } /** * 得到n天之后的日期 * @param days * @return */ public static String getAfterDayDate(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateStr = sdfd.format(date); return dateStr; } /** * 得到指定日期n天之后的日期 * @param days * @return */ public static String getDateAfterDayDate(String date, String days,String format) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.setTimeInMillis(fomatDate(date).getTime()); canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date tempDate = canlendar.getTime(); SimpleDateFormat sdfd = new SimpleDateFormat(format); String dateStr = sdfd.format(tempDate); return dateStr; } /** * 字符串转化为日期 * * @param dateStr * @return */ public static Date dateStrConverToDate(String dateStr, String dateFormat){ Date date = null; SimpleDateFormat smf = new SimpleDateFormat(dateFormat); if(dateStr != null && !"".equals(dateStr)){ try { date = smf.parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } } return date; } /** * 得到n天之后是周几 * @param days * @return */ public static String getAfterDayWeek(String days) { int daysInt = Integer.parseInt(days); Calendar canlendar = Calendar.getInstance(); // java.util包 canlendar.add(Calendar.DATE, daysInt); // 日期减 如果不够减会将月变动 Date date = canlendar.getTime(); SimpleDateFormat sdf = new SimpleDateFormat("E"); String dateStr = sdf.format(date); return dateStr; } public static void main(String[] args) { System.out.println(getDays()); System.out.println(getAfterDayWeek("3")); } /** * 获取YYYY-MM-DD HH:mm:ss格式 * * @return */ public static String getTime(Date date) { SimpleDateFormat timeFormat = new SimpleDateFormat(DATE_TIME_FORMAT_19); return timeFormat.format(date); } /** * 获取HH:mm格式 * * @return */ public static String getTimeShort(Date time) { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm"); String dateString = formatter.format(time); return dateString; } /** * 取得时间差 * * @param nowTime * String(格式:yyyy-MM-dd HH:mm:ss) * @param pastTime * String(格式:yyyy-MM-dd HH:mm:ss) * @return long */ public static long getSecondsCount(String nowTime, String pastTime) { // 获取当前时间的秒数 long now = Timestamp.valueOf(nowTime).getTime() / 1000; // 获取过去时间的秒数 long past = Timestamp.valueOf(pastTime).getTime() / 1000; long time = now - past; log .info("取得时间差:" + time + "秒(" + time / 60 + "分" + time % 60 + "秒)"); return time; } /** * 取得时间差 * * @param nowTime * String(格式:yyyy-MM-dd HH:mm:ss) * @param pastTime * String(格式:yyyy-MM-dd HH:mm:ss) * @return long */ public static String getDisplayTime(String datetime) { Calendar calendar = Calendar.getInstance(); int year = Integer.parseInt(datetime.substring(0,4)); int month = Integer.parseInt(datetime.substring(5,7)); int date = Integer.parseInt(datetime.substring(8,10)); int hour = Integer.parseInt(datetime.substring(11,13)); int minute = Integer.parseInt(datetime.substring(14,16)); //int second = Integer.parseInt(datetime.substring(17,19)); if(calendar.get(Calendar.YEAR)>year){ int y = calendar.get(Calendar.YEAR)-year; return y+"年前"; }else if((calendar.get(Calendar.MONTH)+1)>month){ int m = (calendar.get(Calendar.MONTH)+1)-month; return m+"个月前"; }else if(calendar.get(Calendar.DAY_OF_MONTH)>date){ int d = calendar.get(Calendar.DAY_OF_MONTH)-date; return d+"天前"; }else if(calendar.get(Calendar.HOUR_OF_DAY)>hour){ int h = calendar.get(Calendar.HOUR_OF_DAY)-hour; return h+"小时前"; }else if(calendar.get(Calendar.MINUTE)>minute){ int s = calendar.get(Calendar.MINUTE)-minute; return s+"分钟前"; }else{ return "刚刚"; } } /** * 取得以前的时间 * * @return Date */ public static Date getDateBefore(Date d, int day) { Calendar now = Calendar.getInstance(); now.setTime(d); now.set(Calendar.DATE, now.get(Calendar.DATE) - day); return now.getTime(); } /** * 取得以前的时间 * * @return Date */ public static String getDateBeforeTimes(String transactionTimeType) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(DATE_TIME_FORMAT_19); Date transactionTime = sdf.parse(sdf.format(new Date())); String transactionTimeStr=FactoryConsts.VALUE_BLANK; if (FactoryConsts.STRING_1.equals(transactionTimeType)) { transactionTimeStr = sdf.format(getDateBefore(transactionTime, 7)).toString(); } else if (FactoryConsts.STRING_2.equals(transactionTimeType)) { transactionTimeStr = sdf.format(getDateBefore(transactionTime, 31)).toString(); } else if (FactoryConsts.STRING_3.equals(transactionTimeType)) { transactionTimeStr = sdf.format(getDateBefore(transactionTime, 91)).toString(); } else if (FactoryConsts.STRING_4.equals(transactionTimeType)) { transactionTimeStr = sdf.format(getDateBefore(transactionTime, 365)).toString(); } else { transactionTimeStr=null; } return transactionTimeStr; } /** * 获取指定的日期 * * @return 返回格式:yyyyMMddHHmmss 例:20140831132002 */ public static String getIDDateTime() { DateFormat df = new SimpleDateFormat(DATE_TIME_FORMAT_14); return df.format(new Date()); } /** * 获取当前系统前一天日期 * @param date * @return */ public static Date getNextDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); date = calendar.getTime(); return date; } /** * 判断日期是不是当月最后一天 * @param date * @return */ public static boolean isLastDayByMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); int now = calendar.get(Calendar.DAY_OF_MONTH); date = calendar.getTime(); return now == lastDay; } /** * 获取当前月第一天 * @param date * @return yyyyMMdd */ public static Integer getFirstDayByMonth(Date date) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天 String last = format.format(calendar.getTime()); return Integer.parseInt(last); } /** * 获取当前系统日期 * @param date * @return yyyyMMdd */ public static Integer getNowDateByInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前系统日期 * @param date * @return yyyyMMdd */ public static Integer getNowDateByYMInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前系统前一天日期转数字 * @param date * @return yyyyMMdd */ public static Integer getlastDateByInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前系统前一年 * @param date * @return yyyy */ public static String getLastYearTostr(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, -1); SimpleDateFormat format = new SimpleDateFormat("yyyy"); String time = format.format(calendar.getTime()); return time; } /** * 获取当前年一个月 * @param date * @return yyyyMM */ public static Integer getMonthByYear(String date,String month) { return Integer.parseInt(date.concat(month)); } /** * 返回指定日期的季度 * * @param date * @return 1,2,3,4 */ public static int getQuarterOfYear(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.MONTH) / 3 + 1; } /** * 获取当前系统一周前日期转数字 * @param date * @return yyyyMMdd */ public static Integer getWeekBeforeToInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -7); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前系统前一周前日期字符串 * @param date * @return yyyyMMdd */ public static String getWeekBeforeToStr(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -7); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return time; } /** * 获取当前系统前一年日期 * @param date * @return yyyyMMdd */ public static String getLastYearByYMdTostr(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return time; } /** * 获取当前系统前一年日期 * @param date * @return yyyyMMdd */ public static Integer getLastYearByYMToInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前年份第一个月数字 * @param date * @return yyyyMM */ public static Integer getFirstMonthYMtoInteger(Date date) { SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.MONTH, 0); String last = format.format(calendar.getTime()); return Integer.parseInt(last); } /** * 获取当前年份第一个月数字 * @param date * @return yyyyMM */ public static String getFormatStrDate(Object ojb) { String str=String.valueOf(ojb); int length=str.length(); if(length==4){ return str; }else if(length==6){ StringBuffer sb=new StringBuffer(); sb.append(str.substring(0, 4)+"-"+str.substring(4)); return sb.toString(); }else if(length==8){ StringBuffer sb=new StringBuffer(); sb.append(str.substring(0, 4)+"-"+str.substring(4,6)+"-"+str.substring(6)); return sb.toString(); } return null; } /** * 获取当前系统前一月日期 * @param date * @return yyyyMMdd */ public static Integer getLastMonthByInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 获取当前系统前一月日期 * @param date * @return */ public static Date getNextMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, -1); date = calendar.getTime(); return date; } /** * 获取当前月最后一天 * @param date * @return yyyyMMdd */ public static Integer getLastDayByMonth(Date date) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); String last = format.format(calendar.getTime()); return Integer.parseInt(last); } /** * 获取当前系统前一天日期字符串 * @param date * @return yyyyMMdd */ public static String getNextDayToStr(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); String time = format.format(calendar.getTime()); return time; } /** * 获取当前系统前一月日期 * @param date * @return */ public static Date getLastMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, -1); calendar.getTime(); return calendar.getTime(); } /** * 获取当前系统前一月日期数字 * @param date * @return yyyyMM */ public static Integer getNextMonthYMToInteger(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, -1); SimpleDateFormat format = new SimpleDateFormat("yyyyMM"); String time = format.format(calendar.getTime()); return Integer.parseInt(time); } /** * 转换成BigDecimal并格式化保留小数点2位 * @author jihb * @param obj * @return */ public static BigDecimal formatComma2BigDecimal(Object obj) { String val = String.valueOf(obj); if (val == null) return new BigDecimal("0.00"); val = val.replaceAll(",", ""); if (!isNumber(val)) return new BigDecimal("0.00"); BigDecimal decimal = new BigDecimal(val); decimal = decimal.setScale(2, RoundingMode.HALF_UP); return decimal; } /** * 判断是否为数字 * @author jihb * @param obj * @return */ public static boolean isNumber(String value) { return isInteger(value) || isDouble(value); } /** * 判断是否为Integer * @author jihb * @param obj * @return */ public static boolean isInteger(String value) { try { Integer.parseInt(value); return true; } catch (NumberFormatException e) { return false; } } /** * 判断是否为Double * @author jihb * @param obj * @return */ public static boolean isDouble(String value) { try { Double.parseDouble(value); if (value.contains(".")) return true; return false; } catch (NumberFormatException e) { return false; } }}
0 0
- 各种时间日期工具类
- 日期时间工具类
- 日期时间工具类
- 日期时间工具类
- 时间日期工具类
- 时间 日期工具类
- 日期时间工具类
- 时间日期工具类
- 日期时间工具类
- 日期时间工具类
- 日期时间工具类
- 日期时间工具类
- 日期时间工具类
- 日期时间处理工具类
- java日期时间工具类
- JS 日期时间工具类
- Java时间日期工具类
- 操作日期时间工具类
- virtualbox ubuntu 设置共享文件夹
- hbase的shell小技巧
- 在AlertDialog对话框中弹出软键盘
- Android支付接入:Google In-app-Billing
- iOS多线程编程技术之NSThread、NSOperation、GCD
- 各种时间日期工具类
- Python数据类型:列表、阵列
- HDU 1062 Text Reverse 水题 字符串处理
- jdk,jre,jvm 三者间的差别与联系
- [easyUI] textbox的disabled属性和disable方法
- pp看书笔记---C#高级编程第九版 第六章 【数组】
- Linux负载均衡环境搭建-2 安装J2EE环境
- 内核启动信息中NET: Registered protocol family 31
- apache bench