JAVA 时间工具类
来源:互联网 发布:iphone6s怎样设置网络 编辑:程序博客网 时间:2024/05/22 10:55
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @package :com.base.util
* @memo :
* @fileName:DateUtil.java @class :DateUtil
*/
public class DateUtil{
/** * 定义日期时间格式的中间符号,可以是"-"或"/"或":"。日期默认为"-"时间默认为":" */private static final String formatDateSign = "-";private static final String formatDandTSign = "/";private static final String formatTimeSign = ":";private static final String simpleDateFormat = "yyyy" + formatDateSign + "MM" + formatDateSign + "dd";private static final String simpleTimeFormat = simpleDateFormat + " HH" + formatTimeSign + "mm" + formatTimeSign + "ss";static SimpleDateFormat chineseDateFormat = new SimpleDateFormat( "yyyy-MM-dd");/** * @函数名称:dateTo8 @功能描述:10位yyyy/MM/dd,yyyy-MM-dd,yyyy:MM:dd 转换为8位yyyyMMdd * @param date 要格式化的日期字符串: 10位 yyyy/MM/dd或yyyy-MM-dd或yyyy:MM:dd * @return 返回格式化后的日期 */public static String timeNumberTodate(String time){ int len = time.length(); return time.substring(0, len - 4) + formatDateSign + time.substring(len - 4, len - 2) + formatDateSign + time.substring(len - 2, len);}public static String dateTo8(String date){ if (date == null) return ""; if (date.trim().length() != 10) { return date; } return date.substring(0, 4) + date.substring(5, 7) + date.substring(8, 10);}/** * @函数名称:dateTo8 @功能描述:8位yyyyMMdd 转换为yyy/MM/dd,yyyy-MM-dd,yyyy:MM:dd * @param date 要格式化的日期字符串: 8位yyyyMMdd * @return 返回格式化后的日期 */public static String dateTo10(String date){ if (date == null) return ""; if (date.trim().length() != 8) return ""; return date.substring(0, 4) + formatDateSign + date.substring(4, 6) + formatDateSign + date.substring(6, 8);}public static String dateTo19(String date){ int len = date.length(); if (len != 14) return date; return date.substring(0, 4) + formatDateSign + date.substring(4, 6) + formatDateSign + date.substring(6, 8) + formatDandTSign + date.substring(8, 10) + formatTimeSign + date.substring(10, 12) + formatTimeSign + date.substring(12, 14);}/** * @函数名称:dateTo14 @功能描述:8位yyyyMMdd 转换为yyy/MM/dd,yyyy-MM-dd,yyyy:MM:dd * @param date 要格式化的日期字符串: 8位yyyyMMdd * @return 返回格式化后的日期 */public static String dateTo14(String date){ if (date == null) return ""; if (date.trim().length() != 19) return date; return date.substring(0, 4) + date.substring(5, 7) + date.substring(8, 10) + date.substring(11, 13) + date.substring(14, 16) + date.substring(17);}/** * @函数名称:oracleDateTo8 @功能描述:9位yy-mmm-dd 转换为yyyy-MM-dd * @param date 要格式化的日期字符串:9位yy-mmm-dd * @return 返回格式化后的日期 * @write :wujs * @date :2007-08-30 */public static String oracleDateTo8(String date){ if (date == null) return ""; if (date.trim().length() != 9) return date; String month = ""; String smonth = date.substring(3, 6); if (smonth.equals("JAN")) month = "01"; else if (smonth.equals("FEB")) month = "02"; else if (smonth.equals("MAR")) month = "03"; else if (smonth.equals("APR")) month = "04"; else if (smonth.equals("MAY")) month = "05"; else if (smonth.equals("JUN")) month = "06"; else if (smonth.equals("JUL")) month = "07"; else if (smonth.equals("AUG")) month = "08"; else if (smonth.equals("SEP")) month = "09"; else if (smonth.equals("OCT")) month = "10"; else if (smonth.equals("NOV")) month = "11"; else if (smonth.equals("DEC")) month = "12"; return "20" + date.substring(7, 9) + formatDateSign + month + formatDateSign + date.substring(0, 2);}/** * 时间格式化。 <br> * 8位(HH:mm:ss)或7位(H:mm:ss)的时间转换为6位(HHmmss)或5位(Hmmss) <br> * 时间的分隔字符可以是任意字符,一般为冒号(:) * * @param time -要格式化的时间字符串:8位(HH:mm:ss)或7位(H:mm:ss) * @return String - 返回格式化后的时间 <br> * 若time长度不为8或7,即格式不为8位(HH:mm:ss)或7位(H:mm:ss)形式的时间,则直接返回date。 <br> * 若time为null, 则返回"" */public static String timeTo6(String time){ int len = time.length(); if (len < 7 || len > 8) return ""; return time.substring(0, len - 6) + time.substring(len - 5, len - 3) + time.substring(len - 2, len);}/** * 时间格式化。 <br> * 6位(HHmmss)或5位(Hmmss)的时间转换为8位(HH:mm:ss)或7位(H:mm:ss) * @param date -要格式化的时间字符串: 6位(HHmmss)或5位(Hmmss) * @return String - 返回格式化后的时间 <br> * 若time长度不为5或6,即格式不为6位(HHmmss)或5位(Hmmss)形式的时间,则直接返回date。 <br> * 若time为null, 则返回"" */public static String timeTo8(String time){ int len = time.length(); if (len < 5 || len > 6) return ""; return time.substring(0, len - 4) + formatTimeSign + time.substring(len - 4, len - 2) + formatTimeSign + time.substring(len - 2, len);}/** * @函数名称:stringToSqlDate * @功能描述:将String型的日期格式转换为Sql型的日期格式 * @param str * @return */public static java.sql.Date stringToSqlDate(String str){ if (stringToUtilDate(str) == null || str.length() < 1) return null; else return new java.sql.Date(stringToUtilDate(str).getTime());}/** * @函数名称:stringToUtilDate * @功能描述:将String型的日期格式转换为Util型的日期格式 * @param str * @return */public static java.util.Date stringToUtilDate(String str){ if (null != str && str.length() > 0) { try { // 对两种时间格式进行转化。 if (str.length() <= simpleDateFormat.length()) { // 只包含日期。 return (new SimpleDateFormat(simpleDateFormat)).parse(str); } else { // 日期和时间都有 return (new SimpleDateFormat(simpleTimeFormat)).parse(str); } } catch (ParseException ex) { ex.printStackTrace(); return null; } } else return null;}/** * @函数名称:utilDateToSql * @功能描述:将Util型的日期格式转换为Sql型的日期格式 * @param date * @return */public static java.sql.Date utilDateToSql(java.util.Date date){ return new java.sql.Date(date.getTime());}/** * @函数名称:sqlDateToUtil * @功能描述:将Sql型的日期格式转换为Util型的日期格式 * @param date * @return */public static java.util.Date sqlDateToUtil(java.sql.Date date){ return new java.util.Date(date.getTime());}/** * @函数名称:toDateTimeString * @功能描述:将Sql型的带时间日期格式转换为String型的日期格式 * @param d * @return */public static String toDateTimeString(java.sql.Date d){ if (d == null) { return null; } else { return (new SimpleDateFormat(simpleTimeFormat)).format(d); }}/** * @函数名称:toDateTimeString * @功能描述:将Util型的带时间日期格式转换为String型的日期格式 * @param d * @return */public static String toDateTimeString(java.util.Date d){ if (d == null) { return null; } else { return (new SimpleDateFormat(simpleTimeFormat)).format(d); }}/** * @函数名称:toDateString * @功能描述:将Sql型的只带日期格式转换为String型的日期格式 * @param d * @return */public static String toDateString(java.sql.Date d){ if (d == null) { return null; } else { return (new SimpleDateFormat(simpleDateFormat)).format(d); }}/** * @函数名称:toDateString * @功能描述:将Sql型的只带日期格式转换为String型的日期格式 * @param d * @return */public static String toDateString(java.util.Date d){ if (d == null) { return null; } else { return (new SimpleDateFormat(simpleDateFormat)).format(d); }}/** * @函数名称:getCurrentDate * @功能描述:获取当前日期和时间 * @return */public static java.sql.Date getCurrentDateTime(){ Calendar newcalendar = null; newcalendar = Calendar.getInstance(); String year = String.valueOf(newcalendar.get(Calendar.YEAR)); String month = String.valueOf(newcalendar.get(Calendar.MONTH) + 1); String day = String.valueOf(newcalendar.get(Calendar.DAY_OF_MONTH)); String hour = String.valueOf(newcalendar.get(Calendar.HOUR_OF_DAY)); String min = String.valueOf(newcalendar.get(Calendar.MINUTE)); String sec = String.valueOf(newcalendar.get(Calendar.MINUTE)); return stringToSqlDate(year + formatDateSign + month + formatDateSign + day + " " + hour + formatTimeSign + min + formatTimeSign + sec);}/** * @函数名称:getCurrentDate * @功能描述:获取当前日期(只带日期) * @return */public static java.sql.Date getCurrentDate(){ Calendar newcalendar = null; newcalendar = Calendar.getInstance(); String year = String.valueOf(newcalendar.get(Calendar.YEAR)); String month = String.valueOf(newcalendar.get(Calendar.MONTH) + 1); String day = String.valueOf(newcalendar.get(Calendar.DAY_OF_MONTH)); return stringToSqlDate(year + formatDateSign + month + formatDateSign + day);}/** * @函数名称:getCurrentTime * @功能描述:获取当前时间(只带时间) * @return */public static String getCurrentTime(){ SimpleDateFormat dataFormat = new SimpleDateFormat("HHmmss"); Date date = new Date(); String timeString = dataFormat.format(date); return timeTo8(timeString);}/** * @函数名称:getCurrentTime * @功能描述:获取当前时间(只带时间) * @return */public static String getCurrentDateTimeStr(){ SimpleDateFormat dataFormat = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String timeString = dataFormat.format(date); return timeString;}public static String getCurrentDateTimeStr1(){ SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); String timeString = dataFormat.format(date); return timeString;}public static String getCurrentDateTimeStr2(){ SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmmssSSS"); Date date = new Date(); String timeString = dataFormat.format(date); return timeString;}/** * 功能描述:返回yyyyMMddHHmmss格式化的时间字符串 * @param date * @return */public static String getCurrentDateTimeStr1(Date date){ SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMddHHmmss"); String timeString = dataFormat.format(date); return timeString;}public static String getCurrentDateStr(){ SimpleDateFormat dataFormat = new SimpleDateFormat("yyyy-MM-dd"); Date date = new Date(); String timeString = dataFormat.format(date); return timeString;}public static String getCurrentDateStr1(){ SimpleDateFormat dataFormat = new SimpleDateFormat("yyyyMMdd"); Date date = new Date(); String timeString = dataFormat.format(date); return timeString;}public static String getWeekStr(){ String s = ""; int week = getWeek(); switch (week) { case 1: s = "星期一"; break; case 2: s = "星期二"; break; case 3: s = "星期三"; break; case 4: s = "星期四"; break; case 5: s = "星期五"; break; case 6: s = "星期六"; break; case 7: s = "星期天"; break; default: break; } return s;}/** * 获取当前是星期几。 <br> * 0为星期天、1为星期一、以此类推。 * @return String - 返回当前星期几 */public static int getWeek(){ Date date = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date); int posOfWeek = cal.get(Calendar.DAY_OF_WEEK); posOfWeek--; // Calendar格式转化成普通格式 0星期天, 1 星期一... return posOfWeek;}/** * * @函数名称:addYear * @功能描述: * @param beginTime * @return */public static java.sql.Date addYear(java.sql.Date beginTime, int i){ Calendar date = Calendar.getInstance(); date.setTime(beginTime); date.add(Calendar.YEAR, i); return utilDateToSql(date.getTime());}/** * * @函数名称:addMonth * @功能描述: * @param beginTime * @return */public static java.sql.Date addMonth(java.sql.Date beginTime, int i){ Calendar date = Calendar.getInstance(); date.setTime(beginTime); date.add(Calendar.MONTH, i); return utilDateToSql(date.getTime());}/** * * @函数名称:addMonth * @功能描述: * @param beginTime * @return */public static java.util.Date addMonth(java.util.Date beginTime, int i){ Calendar date = Calendar.getInstance(); date.setTime(beginTime); date.add(Calendar.MONTH, i); return date.getTime();}/** * * @函数名称:addDay * @功能描述: * @param beginTime * @return */public static java.sql.Date addDay(java.sql.Date beginTime, int i){ Calendar date = Calendar.getInstance(); date.setTime(beginTime); date.add(Calendar.DAY_OF_MONTH, i); return utilDateToSql(date.getTime());}/** * * @函数名称:compareYear * @功能描述:比较年 * @param beginTime * @param endTime * @return */public static int compareYear(java.sql.Date beginTime, java.sql.Date endTime){ Calendar begin = Calendar.getInstance(); Calendar end = Calendar.getInstance(); begin.setTime(beginTime); end.setTime(endTime); int compareYear = end.get(Calendar.YEAR) - begin.get(Calendar.YEAR); return compareYear;}/** * * @函数名称:compareMonth * @功能描述:比较月 * @param beginTime * @param endTime * @return */public static int compareMonth(java.sql.Date beginTime, java.sql.Date endTime){ int compareYear = compareYear(beginTime, endTime); Calendar begin = Calendar.getInstance(); Calendar end = Calendar.getInstance(); begin.setTime(beginTime); end.setTime(endTime); int compareMonth = compareYear * 12 + (end.get(Calendar.MONTH) - begin.get(Calendar.MONTH)); return compareMonth;}/** * * @函数名称:compareDay * @功能描述:比较天 * @param beginTime * @param endTime * @return */public static int compareDay(java.sql.Date beginTime, java.sql.Date endTime){ long compare = (endTime.getTime() - beginTime.getTime()) / (1000 * 3600 * 24); String compareStr = String.valueOf(compare); return Integer.parseInt(compareStr);}/** * * @函数名称:compareHour * @功能描述:比较小时 * @param date * @param date2 * @return */public static int compareHour(Date date, Date date2){ long compare = (date2.getTime() - date.getTime()) / (1000 * 3600); String compareStr = String.valueOf(compare); return Integer.parseInt(compareStr);}/** * * @函数名称:compareHour * @功能描述:比较小时 * @param beginTime * @param endTime * @return */public static int compareHourByTimestamp(String beginTime, String endTime){ Long beginTimestamp = Long.parseLong(beginTime); Long endTimestamp = Long.parseLong(endTime); return compareHour(new java.util.Date(beginTimestamp), new java.util.Date(endTimestamp));}/** * 获取一个月的最后一天。 <br> * 例如20030111,即一月份的最后一天是20030131 * @param date -指定日期(yyyyMMdd) * @return String - 返回计算后的日期 */public static String getLastDayOfMonth(String date){ if (date.length() != 8) return ""; int year = Integer.parseInt(date.substring(0, 4)); int month = Integer.parseInt(date.substring(4, 6)); int day = 0; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) { day = 31; } else if (month == 2) { if (((year % 4) == 0) && ((year % 100) != 0)) { day = 29; } else { day = 28; } } else { day = 30; } String newDate = "" + year; if (month < 10) { newDate += "0" + month + day; } else { newDate += "" + month + day; } return newDate;}/** * 获取一个日期的星期 <br> * * @param date -指定日期(yyyy-MM-dd) * @return String - 返回算好的星期 */public static String getWeek(String sDate){ final String dayNames[] = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; SimpleDateFormat sdfInput = new SimpleDateFormat("yyyy-MM-dd"); Calendar calendar = Calendar.getInstance(); Date date = new Date(); try { date = sdfInput.parse(sDate); } catch (ParseException e) { e.printStackTrace(); } calendar.setTime(date); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); return dayNames[dayOfWeek - 1];}public static boolean compareAWithB(Date a, Date b){ return a.before(b);}/** * 比较String类型的时间大小 * @param a * @param b * @return true 表示a<b */public static boolean compareString(String a, String b){ java.util.Date x = stringToUtilDate(a); java.util.Date y = stringToUtilDate(b); return compareAWithB(x, y);}/** * 比较当前时间是否超出指定时间固定的毫秒数 * @param a String类型且yyyy-MM-dd HH:mm:ss * @param time 比对的秒数 * @return */public static boolean compareWithNow(String a, String time){ java.util.Date x = stringToUtilDate(a); int interval = Integer.parseInt(time); java.util.Date y = new Date(System.currentTimeMillis() - interval * 1000); return compareAWithB(x, y);}/** * @函数名称:getCurrentYearMonthStr * @功能描述:获取当前日期(只带年月) 格式 yyyyMM * @return */public static String getCurrentByDate(){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd"); Date date = new Date(); String dateString = dateFormat.format(date); return dateString;}/** * @函数名称:getCurrentYearMonthStr * @功能描述:获取当前日期(只带年月) 格式 yyyyMM * @return */public static String getCurrentByDateS(){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateString = dateFormat.format(date); return dateString;}/** * @函数名称:getCurrentYearMonthStr * @功能描述:获取当前日期(只带年月) 格式 yyyyMM * @return */public static String getCurrentYearMonthStr(){ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMM"); Date date = new Date(); String dateString = dateFormat.format(date); return dateString;}/** * 获取当前年月最大日 * @param date * @return */public static int getMonthDays(String date) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.YEAR, Integer.parseInt(date.substring(0, 4))); calendar.set(Calendar.MONTH, Integer.parseInt(date.substring(5, 7)) -1); int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); return maxDay;}/** * 获取当前年月最大日 * @param date * @return */public static String getMonth(String date) { return date.substring(5, 7);}public static String getDayAddOne(String datetime){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try { date = sdf.parse(datetime); } catch (ParseException e) { e.printStackTrace(); } Calendar cl = Calendar.getInstance(); cl.setTime(date); cl.add(Calendar.DATE, 1); date = cl.getTime(); return sdf.format(date); }/** * 当前月份加 1 * @throws ParseException */public static String getMonthAddOne(String datetime){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); Date date = null; try { date = sdf.parse(datetime); } catch (ParseException e) { e.printStackTrace(); } Calendar cl = Calendar.getInstance(); cl.setTime(date); cl.add(Calendar.MONTH, 1); date = cl.getTime(); return sdf.format(date).substring(5, 7); }/** * 当前月份加 1 * @throws ParseException */public static String getYearAddOne(String datetime){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date date = null; try { date = sdf.parse(datetime); } catch (ParseException e) { e.printStackTrace(); } Calendar cl = Calendar.getInstance(); cl.setTime(date); cl.add(Calendar.YEAR, 1); date = cl.getTime(); return sdf.format(date); }public static void main(String[] args) { System.out.println(getYearAddOne("2016-12-12"));} public static String dateToString(Date data, String formatType) { return new SimpleDateFormat(formatType).format(data);}// long类型转换为String类型// currentTime要转换的long类型的时间// formatType要转换的string类型的时间格式public static String longToString(long currentTime, String formatType) throws ParseException { Date date = longToDate(currentTime, formatType); // long类型转成Date类型 String strTime = dateToString(date, formatType); // date类型转成String return strTime;}// string类型转换为date类型// strTime要转换的string类型的时间,formatType要转换的格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日// HH时mm分ss秒,// strTime的时间格式必须要与formatType的时间格式相同public static Date stringToDate(String strTime, String formatType) throws ParseException { SimpleDateFormat formatter = new SimpleDateFormat(formatType); Date date = null; date = formatter.parse(strTime); return date;}// long转换为Date类型// currentTime要转换的long类型的时间// formatType要转换的时间格式yyyy-MM-dd HH:mm:ss//yyyy年MM月dd日 HH时mm分ss秒public static Date longToDate(long currentTime, String formatType) throws ParseException { Date dateOld = new Date(currentTime); // 根据long类型的毫秒数生命一个date类型的时间 String sDateTime = dateToString(dateOld, formatType); // 把date类型的时间转换为string Date date = stringToDate(sDateTime, formatType); // 把String类型转换为Date类型 return date;}// string类型转换为long类型// strTime要转换的String类型的时间// formatType时间格式// strTime的时间格式和formatType的时间格式必须相同public static long stringToLong(String strTime, String formatType) throws ParseException { Date date = stringToDate(strTime, formatType); // String类型转成date类型 if (date == null) { return 0; } else { long currentTime = dateToLong(date); // date类型转成long类型 return currentTime; }}// date类型转换为long类型// date要转换的date类型的时间public static long dateToLong(Date date) { return date.getTime();}
}
0 0
- java时间工具类
- java 时间工具类
- Java时间工具类
- Java时间工具类
- 时间工具类--java
- Java时间工具类
- java 时间工具类
- java 时间类 工具
- Java时间工具类
- 时间工具类java
- Java时间工具类
- JAVA 时间工具类
- #.java 时间工具类
- java 时间工具类
- [Java]时间工具类
- JAVA时间处理工具类
- java时间处理工具类
- java日期时间工具类
- Android动画详解(三) 属性动画
- Gradle多渠道打包(动态设定App名称,应用图标,替换常量,更改包名,变更渠道)
- 5-11 时间换算
- 浅述Session的持久化的作用与原理
- 为什么Android系统要比ios卡
- JAVA 时间工具类
- openCV中的KeyPoints、DMatch、以及drawMatches函数(sift算法会用到的)
- A1063. Set Similarity (25)
- 妙算(manifold)上cuda、opencv以及qt的配置
- 一个循环内输出九九乘法表
- android知识扩展之屏幕适配
- 数据库常见面试题总结
- STRUTS2报错合集(待添加)
- FTP主动模式和被动模式的比较