场景

全局日期处理类。

时间日期操作类,集成了大部分时间的应用类。

主要功能如下:

获取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中封装的全局日期处理工具类相关推荐

  1. Android+Java中使用Aes对称加密的工具类与使用

    场景 Android+Java中使用RSA加密实现接口调用时的校验功能: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/11146 ...

  2. Java中导出pdf文件,pdf工具类demo

    最近在做导出pdf文件的功能,参考了很多资料和demo,完成了转出pdf的功能,并适合项目的pdf工具类,现贴出具体的工具类和demo,如有不对的地方欢迎指正 1.pdf工具类PdfUtil.java ...

  3. java中map和对象互转工具类

    在项目开发中,经常碰到map转实体对象或者对象转map的场景,工作中,很多时候我们可能比较喜欢使用第三方jar包的API对他们进行转化,而且用起来也还算方便,比如像fastJson就可以轻松实现map ...

  4. 在Java中DES加密/解密的实现[工具类]

    使用前需导入Crypto包: <dependency><groupId>org.springframework.security</groupId><arti ...

  5. Java语言中提供了三个日期类_Java语言学习(5)-Java中基础封装类(日期、时间类)...

    日期和时间封装类 1. Data类 Java日期和时间采用Data类.Data类在java.util包中. Data类构造函数: 1)       Data()   采用当前时间初始化对象: 2)   ...

  6. java中拼接xml方法_Java常用工具类,拼接XML格式的字符串,非常好用

    import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedHashMap; import java.u ...

  7. java处理日期的工具类DateUtil

    java中处理日期的工具类DateUtil package com.leo.demo.othertest; import org.slf4j.LoggerFactory; import java.sq ...

  8. java时间日期工具类_java日期处理工具类

    java日期处理工具类 import java.text.DecimalFormat; import java.text.ParsePosition; import java.text.SimpleD ...

  9. java 日期处理工具类_Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseEx ...

最新文章

  1. onActivityResult完整用法
  2. 骗子防不胜防,我们该如何安全上网?
  3. mysql中的钱null,mysql 中null总结
  4. iPhone Development Blog系列: 如何制作服务条例窗口
  5. 如何利用脚本方法清除文本框中汉字,从而保留英文字母和数字等
  6. Android layout 设置圆角 内部 imageview 无效果
  7. 猜数字游戏编程C语言0到9,【游戏编程】猜数字游戏(C语言)
  8. 刚刚,2020年中国信息通信技术服务大会盛大召开!
  9. C2P工业云进销存管理有什么优势?
  10. 北大计算机系女神每天必看必学的IT公众号
  11. [转] 宝宝出生第一年妈妈最应关心的问题
  12. C语言32位正整数作为id进程,SOJ4453 Excel列数 进制转换
  13. Hyperic-Sigar简介
  14. 红外小目标:DNANet网络结构与模型搭建
  15. html弹幕代码135,弹幕代码详解
  16. (C语言)输入一行字符,将此字符串中最长的单词输出。
  17. 计算机合并单元格怎么操作,如何在Excel中批量合并单元格(快速一步)
  18. 「只推荐一位」一个全是Python干货的公众号
  19. 判断字符串是否相等StringUtils.equals和String.equals
  20. PIC16F887 单片机 proteus SHT11

热门文章

  1. 协议关键技术_北京理工大学与华为签署战略合作协议
  2. open-capacity-platform环境安装
  3. pcb matrix ipc lp viewer软件中SMN、SMM、SML三个库的区别
  4. 测度定义_Real analysis:外测度的一个等价定义
  5. python 停止工作 scapy_常见问题 - Scapy 中文文档_教程_Python开发社区
  6. python随机生成k个不重复的随机数_python 生成不重复的随机数的代码
  7. python程序中断时,输出打印日志
  8. java 轮询请求接口_Android RxJava 实际应用讲解:(无条件)网络请求轮询
  9. java单链表节点翻转_单链表Java实现
  10. 电脑开机一会就蓝屏怎么回事_常见的电脑蓝屏是怎么回事?学会三种解决方法,远离电脑维修店...