JAVA 时间工具类
2017-02-23 11:16
411 查看
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{
}
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(); }
}
相关文章推荐
- JAVA时间处理工具类
- Java 时间转化工具类 Date <->String<->Timestamp
- java时间处理工具类
- JAVA时间操作工具类封装
- java日期时间处理工具类封装
- JAVA工具类集锦2--时间格式转化类
- Java时间工具类
- 【JAVA核心技术】工具类----时间工具类
- Java 中按文件名称分类,按文件大小分类,按照文件类型分类,按照最后修改时间分类的工具类
- IT忍者神龟之Java获取各种常用时间方法(工具类)
- java时间处理工具类
- Java自用日期时间工具类
- java日期时间工具类
- java 时间操作工具类
- 关于日期时间操作工具类DateUtil(一)-----对java.util.Date 的操作.
- java开发中时间按工具类
- java开发中时间按工具类
- 最全的java时间处理工具类
- Java获取各种常用时间方法(工具类)
- java 时间转化工具类