Java中封装的全局日期处理工具类
场景
全局日期处理类。
时间日期操作类,集成了大部分时间的应用类。
主要功能如下:
获取SimpleDateFormat
获取日期中的某数值。如获取月份
增加日期中某类型的某数值。如增加日期
获取精确的日期
判断字符串是否为日期字符串
获取日期字符串的日期风格。失敗返回null。
将日期字符串转化为日期。失败返回null。
将日期字符串转化为另一日期字符串。失败返回null。
增加日期的年份。失败返回null。
增加日期的月份。失败返回null。
增加日期的天数。失败返回null。
增加日期的小时。失败返回null。
增加日期的分钟。失败返回null。
增加日期的秒钟。失败返回null。
获取日期的年份。失败返回0。
获取日期的月份。失败返回0。
获取日期的天数。失败返回0。
获取日期的小时。失败返回0。
获取日期的分钟。失败返回0。
获取日期的秒钟。失败返回0。
获取日期。默认yyyy-MM-dd格式。失败返回null。
获取日期的时间。默认HH:mm:ss格式。失败返回null。
获取日期的星期。失败返回null。
获取两个日期相差的天数 。
获取两个日期相差的毫秒数 。
获得两个日期之间的连续日期.。
将时间转换为时间戳。
获取连续月份。
两个时间相差距离中文描述 。
比较两个时间的大小。
工具类下载:
https://download.csdn.net/download/badao_liumang_qizhi/11140789
实现
import java.text.DateFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.time.Month;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.springframework.core.convert.converter.Converter;/*** 全局日期处理类* Convert<T,S>* 泛型T:代表客户端提交的参数 String* 泛型S:通过convert转换的类型* 时间日期操作类,集成了大部分时间的应用类,尽力做到最大的复用* @author 霸道流氓气质* @DateTime */
public class DateConvert implements Converter<String, Date> {@SuppressWarnings("deprecation")public Date convert(String stringDate) {if (stringDate == null || "".equals(stringDate.trim())) {return null;}Date d = DateConvert.formatStringToDate(stringDate);return d;}private static final ThreadLocal<SimpleDateFormat> threadLocal = new ThreadLocal<SimpleDateFormat>(); private static final Object object = new Object(); /** * 获取SimpleDateFormat * @param pattern 日期格式 * @return SimpleDateFormat对象 * @throws RuntimeException 异常:非法日期格式 * @description SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类。* 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。*/ private static SimpleDateFormat getDateFormat(String pattern) throws RuntimeException { SimpleDateFormat dateFormat = threadLocal.get(); if (dateFormat == null) { synchronized (object) { if (dateFormat == null) { dateFormat = new SimpleDateFormat(pattern); dateFormat.setLenient(false); threadLocal.set(dateFormat); } } } dateFormat.applyPattern(pattern); return dateFormat; } /** * 获取日期中的某数值。如获取月份 * @param date 日期 * @param dateType 日期格式 * @return 数值 */ private static int getInteger(Date date, int dateType) { int num = 0; Calendar calendar = Calendar.getInstance(); if (date != null) { calendar.setTime(date); num = calendar.get(dateType); } return num; } /** * 增加日期中某类型的某数值。如增加日期 * @param date 日期字符串 * @param dateType 类型 * @param amount 数值 * @return 计算后日期字符串 */ private static String addInteger(String date, int dateType, int amount) { String dateString = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = formatStringToDate(date, dateStyle); myDate = addInteger(myDate, dateType, amount); dateString = formatDateToString(myDate, dateStyle); } return dateString; } /** * 增加日期中某类型的某数值。如增加日期 * @param date 日期 * @param dateType 类型 * @param amount 数值 * @return 计算后日期 */ private static Date addInteger(Date date, int dateType, int amount) { Date myDate = null; if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(dateType, amount); myDate = calendar.getTime(); } return myDate; } /** * 获取精确的日期 * @param timestamps 时间long集合 * @return 日期 */ private static Date getAccurateDate(List<Long> timestamps) { Date date = null; long timestamp = 0; Map<Long, long[]> map = new HashMap<Long, long[]>(); List<Long> absoluteValues = new ArrayList<Long>(); if (timestamps != null && timestamps.size() > 0) { if (timestamps.size() > 1) { for (int i = 0; i < timestamps.size(); i++) { for (int j = i + 1; j < timestamps.size(); j++) { long absoluteValue = Math.abs(timestamps.get(i) - timestamps.get(j)); absoluteValues.add(absoluteValue); long[] timestampTmp = { timestamps.get(i), timestamps.get(j) }; map.put(absoluteValue, timestampTmp); } } // 有可能有相等的情况。如2012-11和2012-11-01。时间戳是相等的。此时minAbsoluteValue为0 // 因此不能将minAbsoluteValue取默认值0 long minAbsoluteValue = -1; if (!absoluteValues.isEmpty()) { minAbsoluteValue = absoluteValues.get(0); for (int i = 1; i < absoluteValues.size(); i++) { if (minAbsoluteValue > absoluteValues.get(i)) { minAbsoluteValue = absoluteValues.get(i); } } } if (minAbsoluteValue != -1) { long[] timestampsLastTmp = map.get(minAbsoluteValue); long dateOne = timestampsLastTmp[0]; long dateTwo = timestampsLastTmp[1]; if (absoluteValues.size() > 1) { timestamp = Math.abs(dateOne) > Math.abs(dateTwo) ? dateOne : dateTwo; } } } else { timestamp = timestamps.get(0); } } if (timestamp != 0) { date = new Date(timestamp); } return date; } /** * 判断字符串是否为日期字符串 * @param date 日期字符串 * @return true or false */ public static boolean isDate(String date) { boolean isDate = false; if (date != null) { if (getDateStyle(date) != null) { isDate = true; } } return isDate; } /** * 获取日期字符串的日期风格。失敗返回null。 * @param date 日期字符串 * @return 日期风格 */ public static DateStyle getDateStyle(String date) { DateStyle dateStyle = null; Map<Long, DateStyle> map = new HashMap<Long, DateStyle>(); List<Long> timestamps = new ArrayList<Long>(); for (DateStyle style : DateStyle.values()) { if (style.isShowOnly()) { continue; } Date dateTmp = null; if (date != null) { try { date = style.getValue().equals("yyyy-MM-dd'T'HH:mm:ss.SSS Z")?date.replace("Z", " UTC"):date;ParsePosition pos = new ParsePosition(0); dateTmp = getDateFormat(style.getValue()).parse(date, pos); int dateLen = date.length();boolean dateValide = pos.getIndex() != dateLen;if(dateValide) dateTmp = null;} catch (Exception e) { } } if (dateTmp != null) { timestamps.add(dateTmp.getTime()); map.put(dateTmp.getTime(), style); break;} } Date accurateDate = getAccurateDate(timestamps); if (accurateDate != null) { dateStyle = map.get(accurateDate.getTime()); } return dateStyle; } /** * 将日期字符串转化为日期。失败返回null。 * @param date 日期字符串 * @return 日期 */ public static Date formatStringToDate(String date) { DateStyle dateStyle = getDateStyle(date); return formatStringToDate(date, dateStyle); } /** * 将日期字符串转化为日期。失败返回null。 * @param date 日期字符串 * @param pattern 日期格式 * @return 日期 */ public static Date formatStringToDate(String date, String pattern) { Date myDate = null; if (date != null) { try { myDate = getDateFormat(pattern).parse(date); } catch (Exception e) { } } return myDate; } /** * 将日期字符串转化为日期。失败返回null。 * @param date 日期字符串 * @param dateStyle 日期风格 * @return 日期 */ public static Date formatStringToDate(String date, DateStyle dateStyle) { Date myDate = null; if (dateStyle != null) { date = dateStyle.getValue().equals("yyyy-MM-dd'T'HH:mm:ss.SSS Z")?date.replace("Z", " UTC"):date;myDate = formatStringToDate(date, dateStyle.getValue()); } return myDate; } /** * 将日期转化为日期字符串。失败返回null。 * @param date 日期 * @param pattern 日期格式 * @return 日期字符串 */ public static String formatDateToString(Date date, String pattern) { String dateString = null; if (date != null) { try { dateString = getDateFormat(pattern).format(date); } catch (Exception e) { } } return dateString; } /** * 将日期转化为日期字符串。失败返回null。 * @param date 日期 * @param dateStyle 日期风格 * @return 日期字符串 */ public static String formatDateToString(Date date, DateStyle dateStyle) { String dateString = null; if (dateStyle != null) { dateString = formatDateToString(date, dateStyle.getValue()); } return dateString; } /** * 将日期转换为指定格式。 * @param date 日期 * @param dateStyle 日期风格 * @return 日期字符串 */ public static Date formatDateToDate(Date date, DateStyle dateStyle) {Date myDate = null; if (dateStyle != null) { String dateStr = formatDateToString(date, dateStyle);myDate = formatStringToDate(dateStr, dateStyle.getValue()); } return myDate; }/** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param newPattern 新日期格式 * @return 新日期字符串 */ public static String formatStringToString(String date, String newPattern) { DateStyle oldDateStyle = getDateStyle(date); return formatStringToString(date, oldDateStyle, newPattern); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param newDateStyle 新日期风格 * @return 新日期字符串 */ public static String formatStringToString(String date, DateStyle newDateStyle) { DateStyle oldDateStyle = getDateStyle(date); return formatStringToString(date, oldDateStyle, newDateStyle); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param olddPattern 旧日期格式 * @param newPattern 新日期格式 * @return 新日期字符串 */ public static String formatStringToString(String date, String olddPattern, String newPattern) { return formatDateToString(formatStringToDate(date, olddPattern), newPattern); } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param olddDteStyle 旧日期风格 * @param newParttern 新日期格式 * @return 新日期字符串 */ public static String formatStringToString(String date, DateStyle olddDteStyle, String newParttern) { String dateString = null; if (olddDteStyle != null) { dateString = formatStringToString(date, olddDteStyle.getValue(), newParttern); } return dateString; } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param olddPattern 旧日期格式 * @param newDateStyle 新日期风格 * @return 新日期字符串 */ public static String formatStringToString(String date, String olddPattern, DateStyle newDateStyle) { String dateString = null; if (newDateStyle != null) { dateString = formatStringToString(date, olddPattern, newDateStyle.getValue()); } return dateString; } /** * 将日期字符串转化为另一日期字符串。失败返回null。 * @param date 旧日期字符串 * @param olddDteStyle 旧日期风格 * @param newDateStyle 新日期风格 * @return 新日期字符串 */ public static String formatStringToString(String date, DateStyle olddDteStyle, DateStyle newDateStyle) { String dateString = null; if (olddDteStyle != null && newDateStyle != null) { dateString = formatStringToString(date, olddDteStyle.getValue(), newDateStyle.getValue()); } return dateString; } /** * 增加日期的年份。失败返回null。 * @param date 日期 * @param yearAmount 增加数量。可为负数 * @return 增加年份后的日期字符串 */ public static String addYear(String date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的年份。失败返回null。 * @param date 日期 * @param yearAmount 增加数量。可为负数 * @return 增加年份后的日期 */ public static Date addYear(Date date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的月份。失败返回null。 * @param date 日期 * @param monthAmount 增加数量。可为负数 * @return 增加月份后的日期字符串 */ public static String addMonth(String date, int monthAmount) { return addInteger(date, Calendar.MONTH, monthAmount); } /** * 增加日期的月份。失败返回null。 * @param date 日期 * @param monthAmount 增加数量。可为负数 * @return 增加月份后的日期 */ public static Date addMonth(Date date, int monthAmount) { return addInteger(date, Calendar.MONTH, monthAmount); } /** * 增加日期的天数。失败返回null。 * @param date 日期字符串 * @param dayAmount 增加数量。可为负数 * @return 增加天数后的日期字符串 */ public static String addDay(String date, int dayAmount) { return addInteger(date, Calendar.DATE, dayAmount); } /** * 增加日期的天数。失败返回null。 * @param date 日期 * @param dayAmount 增加数量。可为负数 * @return 增加天数后的日期 */ public static Date addDay(Date date, int dayAmount) { return addInteger(date, Calendar.DATE, dayAmount); } /** * 增加日期的小时。失败返回null。 * @param date 日期字符串 * @param hourAmount 增加数量。可为负数 * @return 增加小时后的日期字符串 */ public static String addHour(String date, int hourAmount) { return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount); } /** * 增加日期的小时。失败返回null。 * @param date 日期 * @param hourAmount 增加数量。可为负数 * @return 增加小时后的日期 */ public static Date addHour(Date date, int hourAmount) { return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount); } /** * 增加日期的分钟。失败返回null。 * @param date 日期字符串 * @param minuteAmount 增加数量。可为负数 * @return 增加分钟后的日期字符串 */ public static String addMinute(String date, int minuteAmount) { return addInteger(date, Calendar.MINUTE, minuteAmount); } /** * 增加日期的分钟。失败返回null。 * @param date 日期 * @param dayAmount 增加数量。可为负数 * @return 增加分钟后的日期 */ public static Date addMinute(Date date, int minuteAmount) { return addInteger(date, Calendar.MINUTE, minuteAmount); } /** * 增加日期的秒钟。失败返回null。 * @param date 日期字符串 * @param dayAmount 增加数量。可为负数 * @return 增加秒钟后的日期字符串 */ public static String addSecond(String date, int secondAmount) { return addInteger(date, Calendar.SECOND, secondAmount); } /** * 增加日期的秒钟。失败返回null。 * @param date 日期 * @param dayAmount 增加数量。可为负数 * @return 增加秒钟后的日期 */ public static Date addSecond(Date date, int secondAmount) { return addInteger(date, Calendar.SECOND, secondAmount); } /** * 获取日期的年份。失败返回0。 * @param date 日期字符串 * @return 年份 */ public static int getYear(String date) { return getYear(formatStringToDate(date)); } /** * 获取日期的年份。失败返回0。 * @param date 日期 * @return 年份 */ public static int getYear(Date date) { return getInteger(date, Calendar.YEAR); } /** * 获取日期的月份。失败返回0。 * @param date 日期字符串 * @return 月份 */ public static int getMonth(String date) { return getMonth(formatStringToDate(date)); } /** * 获取日期的月份。失败返回0。 * @param date 日期 * @return 月份 */ public static int getMonth(Date date) { return getInteger(date, Calendar.MONTH) + 1; } /*** 功能说明:获取月份* 修改说明:* @author 霸道流氓气质* @date * @param date* @return*/public static Month getMonthEnum(String date) {Month month = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = formatStringToDate(date, dateStyle); month = getMonthEnum(myDate); } return month; } /*** 功能说明:获取月份* 修改说明:* @author 霸道流氓气质* @date */public static Month getMonthEnum(Date date){Month month = null; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int monthNumber = calendar.get(Calendar.MONTH); switch (monthNumber) { case 0: month = month.JANUARY; break; case 1: month = month.FEBRUARY; break; case 2: month = month.MARCH; break; case 3: month = month.APRIL; break; case 4: month = month.MAY; break; case 5: month = month.JUNE; break; case 6: month = month.JULY; break; case 7: month = month.AUGUST; break; case 8: month = month.SEPTEMBER; break; case 9: month = month.OCTOBER; break; case 10: month = month.NOVEMBER; break; case 11: month = month.DECEMBER; break; } return month; }/** * 获取日期的天数。失败返回0。 * @param date 日期字符串 * @return 天 */ public static int getDay(String date) { return getDay(formatStringToDate(date)); } /** * 获取日期的天数。失败返回0。 * @param date 日期 * @return 天 */ public static int getDay(Date date) { return getInteger(date, Calendar.DATE); } /** * 获取日期的小时。失败返回0。 * @param date 日期字符串 * @return 小时 */ public static int getHour(String date) { return getHour(formatStringToDate(date)); } /** * 获取日期的小时。失败返回0。 * @param date 日期 * @return 小时 */ public static int getHour(Date date) { return getInteger(date, Calendar.HOUR_OF_DAY); } /** * 获取日期的分钟。失败返回0。 * @param date 日期字符串 * @return 分钟 */ public static int getMinute(String date) { return getMinute(formatStringToDate(date)); } /** * 获取日期的分钟。失败返回0。 * @param date 日期 * @return 分钟 */ public static int getMinute(Date date) { return getInteger(date, Calendar.MINUTE); } /** * 获取日期的秒钟。失败返回0。 * @param date 日期字符串 * @return 秒钟 */ public static int getSecond(String date) { return getSecond(formatStringToDate(date)); } /** * 获取日期的秒钟。失败返回0。 * @param date 日期 * @return 秒钟 */ public static int getSecond(Date date) { return getInteger(date, Calendar.SECOND); } /** * 获取日期 。默认yyyy-MM-dd格式。失败返回null。 * @param date 日期字符串 * @return 日期 */ public static String getDate(String date) { return formatStringToString(date, DateStyle.YYYY_MM_DD); } /** * 获取日期。默认yyyy-MM-dd格式。失败返回null。 * @param date 日期 * @return 日期 */ public static String getDate(Date date) { return formatDateToString(date, DateStyle.YYYY_MM_DD); } /** * 获取日期的时间。默认HH:mm:ss格式。失败返回null。 * @param date 日期字符串 * @return 时间 */ public static String getTime(String date) { return formatStringToString(date, DateStyle.HH_MM_SS); } /** * 获取日期的时间。默认HH:mm:ss格式。失败返回null。 * @param date 日期 * @return 时间 */ public static String getTime(Date date) { return formatDateToString(date, DateStyle.HH_MM_SS); } /** * 获取日期的星期。失败返回null。 * @param date 日期字符串 * @return 星期 */ public static Week getWeek(String date) { Week week = null; DateStyle dateStyle = getDateStyle(date); if (dateStyle != null) { Date myDate = formatStringToDate(date, dateStyle); week = getWeek(myDate); } return week; } /** * 获取日期的星期。失败返回null。 * @param date 日期 * @return 星期 */ public static Week getWeek(Date date) { Week week = null; Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int weekNumber = calendar.get(Calendar.DAY_OF_WEEK) - 1; switch (weekNumber) { case 0: week = Week.SUNDAY; break; case 1: week = Week.MONDAY; break; case 2: week = Week.TUESDAY; break; case 3: week = Week.WEDNESDAY; break; case 4: week = Week.THURSDAY; break; case 5:week = Week.FRIDAY;break; case 6: week = Week.SATURDAY; break; } return week; } /** * 获取两个日期相差的天数 * @param date 日期 * @param otherDate 另一个日期 */ public static int getDifferDaysNoAbs(Date date, Date otherDate) { int num = 0; Date dateTmp = formatStringToDate(getDate(date), DateStyle.YYYY_MM_DD); Date otherDateTmp = formatStringToDate(getDate(otherDate), DateStyle.YYYY_MM_DD); if (dateTmp != null && otherDateTmp != null) { long time = dateTmp.getTime() - otherDateTmp.getTime(); num = (int) (time / (24 * 60 * 60 * 1000)); } return num; } /** * 获取两个日期相差的天数 * @param date 日期 * @param otherDate 另一个日期 */ public static int getDifferDays(Date date, Date otherDate) { int num = 0; Date dateTmp = formatStringToDate(getDate(date), DateStyle.YYYY_MM_DD); Date otherDateTmp = formatStringToDate(getDate(otherDate), DateStyle.YYYY_MM_DD); if (dateTmp != null && otherDateTmp != null) { long time = Math.abs(dateTmp.getTime() - otherDateTmp.getTime()); num = (int) (time / (24 * 60 * 60 * 1000)); } return num; } /** * 获取两个日期相差的* @param date 日期字符串 * @param otherDate 另一个日期字符串 * @return 相差天数。如果失败则返回-1 */ public static int getDifferDaysNoAbs(String date, String otherDate) { return getDifferDaysNoAbs(formatStringToDate(date), formatStringToDate(otherDate)); }/** * 获取两个日期相差的* @param date 日期字符串 * @param otherDate 另一个日期字符串 * @return 相差天数。如果失败则返回-1 */ public static int getDifferDays(String date, String otherDate) { return getDifferDays(formatStringToDate(date), formatStringToDate(otherDate)); }/** * 获取两个日期相差的毫秒数 * @param date 日期 * @param otherDate 另一个日期 * @return 相差天数。如果失败则返回-1 */ public static long getDifferMilliSecond(Date date, Date otherDate) { long time = 0;Date dateTmp = formatStringToDate(getDate(date),DateStyle.YYYY_MM_DD);Date otherDateTmp = formatStringToDate(getDate(otherDate),DateStyle.YYYY_MM_DD);if (dateTmp != null && otherDateTmp != null) {time = dateTmp.getTime() - otherDateTmp.getTime();}return time; } /** * 获取两个日期相差的毫秒数 * @param date 日期 * @param otherDate 另一个日期 * @return 相差天数。如果失败则返回-1 */ public static long getDifferMilliSecond(String date, String otherDate) { return getDifferMilliSecond(formatStringToDate(date), formatStringToDate(otherDate)); }/** * @Title:getDaysListBetweenDates * @Description: 获得两个日期之间的连续日期. * @param begin 开始日期 * @param end 结束日期* @param outFormat 输出时间格式* @return * @return List<String> */ public static List<String> getDaysListBetweenTwoDates(String begin, String end,String outFormat) { List<String> dateList = new ArrayList<String>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(formatDateToString(beginDate,outFormat)); beginDate = addDay(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /** * @Title:getDaysListBetweenDates * @Description: 获得两个日期之间的连续日期. * @param begin 开始日期 * @param end 结束日期* @param outFormat 输出时间格式* @return * @return List<String> */ public static List<String> getDaysListBetweenTwoDates(String begin, String end,DateStyle outFormat) { List<String> dateList = new ArrayList<String>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(formatDateToString(beginDate,outFormat)); beginDate = addDay(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /** * @Title:getDaysListBetweenDates * @Description: 获得两个日期之间的连续日期. * @param begin 开始日期 * @param end 结束日期* @param outFormat 输出时间格式* @return * @return List<String> */ public static List<Date> getDaysListBetweenTwoDatesByDateType(String begin, String end,String outFormat) { List<Date> dateList = new ArrayList<Date>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(beginDate); beginDate = addDay(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /** * @Title:getDaysListBetweenDates * @Description: 获得两个日期之间的连续日期. * @param begin 开始日期 * @param end 结束日期* @param outFormat 输出时间格式* @return * @return List<String> */ public static List<Date> getDaysListBetweenTwoDatesByDateType(String begin, String end,DateStyle outFormat) { List<Date> dateList = new ArrayList<Date>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(beginDate); beginDate = addDay(beginDate, 1);} while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /*** <p>Title: </p>* <p>Description:将时间转换为时间戳</p>* <p>Company: mesnac</p>* @param s* @return* @throws ParseException* @author 霸道流氓气质* @date * @retrun*/public static Integer transForMilliSecondByDate(Date date){ if(date==null) return null; return (int)(date.getTime()); } /*** <p>Title: </p>* <p>Description:将时间转换为时间戳</p>* <p>Company: mesnac</p>* @param date* @return* @author wuzq* @date 2017-5-2上午12:30:25* @retrun*/public static Integer transForMilliSecondByString(String date){ if(date==null) return null; return (int)(formatStringToDate(date).getTime()); }/*** 功能说明:获取连续月份* 修改说明:数据样板说明:2017-07-01,2017-08-01,2017-09-01......* @author 霸道流氓气质* @date * @param begin 开始时间* @param end 结束时间* @param outFormat 日期格式* @return List<String>*/public static List<String> getMonthsListBetweenTwoDatesToString(String begin, String end,String outFormat){List<String> dateList = new ArrayList<String>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(formatDateToString(beginDate,outFormat)); beginDate = addMonth(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; }/*** 功能说明:获取连续月份* 修改说明:数据样板说明:2017-07-01,2017-08-01,2017-09-01......* @author 霸道流氓气质* @date * @param begin 开始时间* @param end 结束时间* @param outFormat 日期格式* @return List<String>*/ public static List<String> getMonthsListBetweenTwoDatesToString(String begin, String end,DateStyle outFormat) { List<String> dateList = new ArrayList<String>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(formatDateToString(beginDate,outFormat)); beginDate = addMonth(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /*** 功能说明:获取连续月份* 修改说明:数据样板说明:2017-07-01,2017-08-01,2017-09-01......* @author 霸道流氓气质* @date * @param begin 开始时间* @param end 结束时间* @param outFormat 日期格式* @return List<Date>*/public static List<Date> getMonthsListBetweenTwoDatesToDate(String begin, String end,String outFormat) { List<Date> dateList = new ArrayList<Date>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(beginDate); beginDate = addMonth(beginDate, 1); } while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; } /*** 功能说明:获取连续月份* 修改说明:数据样板说明:2017-07-01,2017-08-01,2017-09-01......* @author 霸道流氓气质* @date * @param begin 开始时间* @param end 结束时间* @param outFormat 日期格式* @return List<Date>*/public static List<Date> getMonthsListBetweenTwoDatesToDate(String begin, String end,DateStyle outFormat) { List<Date> dateList = new ArrayList<Date>(); try { begin = formatStringToString(begin, outFormat);end = formatStringToString(end, outFormat);Date beginDate = formatStringToDate(begin, outFormat); Date endDate = formatStringToDate(end, outFormat); if (beginDate.compareTo(endDate) > 0) { return dateList; } do { dateList.add(beginDate); beginDate = addMonth(beginDate, 1);} while (beginDate.compareTo(endDate) <= 0); } catch (Exception e) { e.printStackTrace(); } return dateList; }/*** 功能说明:两个时间相差距离中文描述 * 修改说明:* @author 霸道流氓气质* @date * @param str1 时间参数 1 格式:1990-01-01 12:00:00 * @param str2 时间参数 2 格式:2009-01-01 12:00:00 * @return */public static String getDistanceTime(String str1, String str2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date one; Date two; long day = 0; long hour = 0; long min = 0; long sec = 0; try { one = df.parse(str1); two = df.parse(str2); long time1 = one.getTime(); long time2 = two.getTime(); long diff ; if(time1<time2) { diff = time2 - time1; } else { diff = time1 - time2; } day = diff / (24 * 60 * 60 * 1000); hour = (diff / (60 * 60 * 1000) - day * 24); min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60); sec = (diff/1000-day*24*60*60-hour*60*60-min*60); } catch (ParseException e) { e.printStackTrace(); } if(0!=day) {return day + "天" + hour + "小时" + min + "分" + sec + "秒"; }if(0!=hour) {return hour + "小时" + min + "分" + sec + "秒"; }if(0!=min) {return min + "分" + sec + "秒"; }return sec + "秒"; } /*** 功能说明:两个时间相差距离中文描述 * 修改说明:* @author 霸道流氓气质* @date * @param str1 时间参数 1 格式:1990-01-01 12:00:00 * @param str2 时间参数 2 格式:2009-01-01 12:00:00 * @return */public static String getDistanceTimeWithOutSec(String str1, String str2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date one; Date two; long day = 0; long hour = 0; long min = 0; try { one = df.parse(str1); two = df.parse(str2); long time1 = one.getTime(); long time2 = two.getTime(); long diff ; if(time1<time2) { diff = time2 - time1; } else { diff = time1 - time2; } day = diff / (24 * 60 * 60 * 1000); hour = (diff / (60 * 60 * 1000) - day * 24); min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60); } catch (ParseException e) { e.printStackTrace(); } if(0!=day) {return day + "天" + hour + "小时" + min + "分"; }if(0!=hour) {return hour + "小时" + min + "分"; }return min + "分"; } /*** 功能说明:比较两个时间的大小* 修改说明:* @author 霸道流氓气质* @date * @param date* @param anotherDate* @param yyyyMmDdHhMm* @return*/public static int compare(String date, String anotherDate,DateStyle yyyyMmDdHhMm) {Date tmpDate = DateConvert.formatStringToDate(date, yyyyMmDdHhMm); Date tmpAnotherDate = DateConvert.formatStringToDate(anotherDate, yyyyMmDdHhMm);return tmpDate.compareTo(tmpAnotherDate);}/*** 功能说明:比较两个时间的大小* 修改说明:* @author 霸道流氓气质* @date * @param date* @param anotherDate* @param yyyyMmDdHhMm* @return*/public static int compare(Date date, Date anotherDate,DateStyle yyyyMmDdHhMm) {Date tmpDate = DateConvert.formatDateToDate(date, yyyyMmDdHhMm); Date tmpAnotherDate = DateConvert.formatDateToDate(anotherDate, yyyyMmDdHhMm);return tmpDate.compareTo(tmpAnotherDate);}}
Java中封装的全局日期处理工具类相关推荐
- Android+Java中使用Aes对称加密的工具类与使用
场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...
- Java中导出pdf文件,pdf工具类demo
最近在做导出pdf文件的功能,参考了很多资料和demo,完成了转出pdf的功能,并适合项目的pdf工具类,现贴出具体的工具类和demo,如有不对的地方欢迎指正 1.pdf工具类PdfUtil.java ...
- java中map和对象互转工具类
在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map ...
- 在Java中DES加密/解密的实现[工具类]
使用前需导入Crypto包: <dependency><groupId>org.springframework.security</groupId><arti ...
- Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...
日期和时间封装类 1. Data类 Java日期和时间采用Data类.Data类在java.util包中. Data类构造函数: 1) Data() 采用当前时间初始化对象: 2) ...
- java中拼接xml方法_Java常用工具类,拼接XML格式的字符串,非常好用
import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.u ...
- java处理日期的工具类DateUtil
java中处理日期的工具类DateUtil package com.leo.demo.othertest; import org.slf4j.LoggerFactory; import java.sq ...
- java时间日期工具类_java日期处理工具类
java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...
- java 日期处理工具类_Java日期处理工具类DateUtils详解
本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...
最新文章
- onActivityResult完整用法
- 骗子防不胜防,我们该如何安全上网?
- mysql中的钱null,mysql 中null总结
- iPhone Development Blog系列: 如何制作服务条例窗口
- 如何利用脚本方法清除文本框中汉字,从而保留英文字母和数字等
- Android layout 设置圆角 内部 imageview 无效果
- 猜数字游戏编程C语言0到9,【游戏编程】猜数字游戏(C语言)
- 刚刚,2020年中国信息通信技术服务大会盛大召开!
- C2P工业云进销存管理有什么优势?
- 北大计算机系女神每天必看必学的IT公众号
- [转] 宝宝出生第一年妈妈最应关心的问题
- C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换
- Hyperic-Sigar简介
- 红外小目标:DNANet网络结构与模型搭建
- html弹幕代码135,弹幕代码详解
- (C语言)输入一行字符,将此字符串中最长的单词输出。
- 计算机合并单元格怎么操作,如何在Excel中批量合并单元格(快速一步)
- 「只推荐一位」一个全是Python干货的公众号
- 判断字符串是否相等StringUtils.equals和String.equals
- PIC16F887 单片机 proteus SHT11
热门文章
- 协议关键技术_北京理工大学与华为签署战略合作协议
- open-capacity-platform环境安装
- pcb matrix ipc lp viewer软件中SMN、SMM、SML三个库的区别
- 测度定义_Real analysis:外测度的一个等价定义
- python 停止工作 scapy_常见问题 - Scapy 中文文档_教程_Python开发社区
- python随机生成k个不重复的随机数_python 生成不重复的随机数的代码
- python程序中断时,输出打印日志
- java 轮询请求接口_Android RxJava 实际应用讲解:(无条件)网络请求轮询
- java单链表节点翻转_单链表Java实现
- 电脑开机一会就蓝屏怎么回事_常见的电脑蓝屏是怎么回事?学会三种解决方法,远离电脑维修店...