import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.temporal.ChronoUnit;
import java.util.*;
public class DateUtil {
public static final String DAFAULT_DATE_FORMAT = "yyyy-M-d";
public static final String DATE_FORMAT = "yyyy-MM-dd";
public static final String DAFAULT_DATETIME_FORMAT = "yyyy-M-d HH:mm:ss";
public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DAFAULT_TIME_FORMAT = "HH:mm:ss";
public static final long DAFAULT_MS = 86400000;
/**
* 日期格式化1
*/
public static String format(Calendar c, String pattern) {
Calendar calendar;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
if (pattern == null || pattern.equals("")) {
pattern = DATETIME_FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(calendar.getTime());
}
/**
* 日期格式化2
*/
public static String format(Date date, String pattern) {
Date tempDate = null;
if (date != null) {
tempDate = date;
} else {
tempDate = Calendar.getInstance().getTime();
}
if (pattern == null || pattern.equals("")) {
pattern = DATETIME_FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(tempDate);
}
/**
* 日期格式化3
*
* @param date 需要转化的时间对象
* @return 返回格式化字符串
*
*/
public static String getDataFormat(Date date, String... patterns) {
if (patterns.length == 0) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
return sdf.format(date);
} else {
SimpleDateFormat sdf = new SimpleDateFormat(patterns[0]);
return sdf.format(date);
}
}
/**
* 把格式化日期字符串 转换成 日期对象
*
* @param date 日期字符串
* @param patterns 要转换的格式
* @return 返回日期对象
* @throws ParseException 异常
*/
public static Date getParseDate(String date, String... patterns) throws ParseException {
if (patterns.length == 0) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
return sdf.parse(date);
} else {
SimpleDateFormat sdf = new SimpleDateFormat(patterns[0]);
return sdf.parse(date);
}
}
/**
* 获取上一个时间跨度的时间点
*
* @param date 时间点
* @param dayNum 时间跨度的天数
* @return 格式化时间
*/
public static Date getLastDateSpan(Date date, int dayNum) {
long dateMsLong = date.getTime() - (dayNum * DAFAULT_MS);
return new Date(dateMsLong);
}
/**
* 获取上一个时间跨度的时间点
*
* @param date 时间点
* @param dayNum 时间跨度的天数
* @return 格式化时间
*/
public static Date getNextDateSpan(Date date, int dayNum) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
long dateMsLong = date.getTime() + dayNum * 1000 * 60 * 60;
return new Date(dateMsLong);
}
/**
* 判断时间前后
*
* @param date1 时间点1
* @param date2 时间点2
* @return 返回boolean类型
*/
public static boolean judgeDate(Date date1, Date date2) {
return date1.getTime() > date2.getTime();
}
/**
* 获取两个日期字符串之间的日期集合
*
* @param startTime:String
* @param endTime:String
* @return list:yyyy-MM-dd
*/
public static List<String> getBetweenDate(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
//把日期增加一天
calendar.add(Calendar.DATE, 1);
// 获取增加后的日期
startDate = calendar.getTime();
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 获取两个日期字符串之间的日期集合
*
* @param startTime:String
* @param endTime:String
* @return list:yyyy-MM-dd hh:mm:ss
*/
public static List<String> getBetweenDatess(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
//把日期增加一天
calendar.add(Calendar.DATE, 1);
// 获取增加后的日期
startDate = calendar.getTime();
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 获取两个日期字符串之间的日期集合
*
* @param startTime:String
* @param endTime:String
* @return list:yyyy-MM-dd hh:mm:ss
*/
public static List<String> getBetween(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
//把日期增加一天
calendar.add(Calendar.DATE, 1);
// 获取增加后的日期
startDate = calendar.getTime();
}
list.add(sdf.format(endDate));
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 获取两个日期字符串之间的日期集合
*
* @param startTime:String
* @param endTime:String
* @return list:yyyy-MM-dd
*/
public static List<String> getHourDate(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf.format(startDate));
// 设置日期
calendar.setTime(startDate);
calendar.add(Calendar.HOUR, +1);
// 获取增加后的日期
startDate = calendar.getTime();
}
list.add(sdf.format(endDate));
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 获取两个日期字符串之间的小时集合
*
* @param startTime:String --> 2019-11-12 00:00:00
* @param endTime:String --> 2019-11-12 23:59:59
* @return list:yyyy-MM-dd HH --> 2019-11-12 00 ---- 2019-11-12 23
*/
public static List<String> getHourDate2(String startTime, String endTime) {
SimpleDateFormat sdf = new SimpleDateFormat(DATETIME_FORMAT);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH");
// 声明保存日期集合
List<String> list = new ArrayList<String>();
try {
// 转化成日期类型
Date startDate = sdf.parse(startTime);
Date endDate = sdf.parse(endTime);
//用Calendar 进行日期比较判断
Calendar calendar = Calendar.getInstance();
while (startDate.getTime() <= endDate.getTime()) {
// 把日期添加到集合
list.add(sdf2.format(startDate));
// 设置日期
calendar.setTime(startDate);
calendar.add(Calendar.HOUR, +1);
// 获取增加后的日期
startDate = calendar.getTime();
}
} catch (ParseException e) {
e.printStackTrace();
}
return list;
}
/**
* 计算日期{@code startDate}与{@code endDate}的间隔天数
*
* @param startDate
* @param endDate
* @return 间隔天数
*/
static long until(LocalDate startDate, LocalDate endDate) {
return startDate.until(endDate, ChronoUnit.DAYS);
}
/**
* 获取 最近24小时的 开始与结束时间点
*
* @return List<String>
*/
public static List<String> getLast24HourDate() {
List<String> Last24Hour = new ArrayList<>();
Date nowDate = new Date();
Last24Hour.add(getDataFormat(nowDate, DATETIME_FORMAT));
Date lastDayDate = new Date(nowDate.getTime() - DAFAULT_MS);
Last24Hour.add(getDataFormat(lastDayDate, DATETIME_FORMAT));
return Last24Hour;
}
public static List<String> getLast24HourDate2(Date nowDate) {
List<String> Last24Hour = new ArrayList<>();
// Date nowDate= new Date();
Last24Hour.add(getDataFormat(nowDate, DATETIME_FORMAT));
Date lastDayDate = new Date(nowDate.getTime() - DAFAULT_MS);
Last24Hour.add(getDataFormat(lastDayDate, DATETIME_FORMAT));
return Last24Hour;
}
/**
* 获取昨天一天的开始时间和结束时间
*
* @return List<String>
*/
public static List<String> getLastDay24Hour() {
List<String> Last24Hour = new ArrayList<>();
Date lastDate = new Date(System.currentTimeMillis() - DAFAULT_MS);
Last24Hour.add(getDataFormat(lastDate, "yyyy-MM-dd") + " 00:00:00");
Last24Hour.add(getDataFormat(lastDate, "yyyy-MM-dd") + " 23:59:59");
return Last24Hour;
}
/**
* 获取某一天的开始时间和结束时间
*
* @return List<String>
*/
public static List<String> getLastDay24Hour(int num) {
List<String> Last24Hour = new ArrayList<>();
Date lastDate = new Date(System.currentTimeMillis() - DAFAULT_MS * num);
Last24Hour.add(getDataFormat(lastDate, "yyyy-MM-dd") + " 00:00:00");
Last24Hour.add(getDataFormat(lastDate, "yyyy-MM-dd") + " 23:59:59");
return Last24Hour;
}
/**
* 获取前7天时间点
*
* @return List<String>
*/
public static List<String> getLastWeek() {
List<String> Last24Hour = new ArrayList<>();
Date lastDate = new Date(System.currentTimeMillis() - DAFAULT_MS);
Date LastWeek = new Date(lastDate.getTime() - DAFAULT_MS * 7);
Last24Hour.add(getDataFormat(lastDate, "yyyy-MM-dd") + " 00:00:00");
Last24Hour.add(getDataFormat(LastWeek, "yyyy-MM-dd") + " 23:59:59");
return Last24Hour;
}
/**
* 获取前一天 的某小时 事件段
* @param drillDown DrillDown
* @return List<String>
*/
// public static List<String> getLastDay24Hour_hourToMinutes(DrillDown drillDown){
// List<String> Last24Hour = new ArrayList<>();
// Date nowDate = new Date();
// String hour = drillDown.getDate();
// Date lastDate = new Date(nowDate.getTime()-1000*60*60*24);
Date lastDate = new Date(nowDate.getTime());
// Last24Hour.add(getDataFormat(lastDate,"yyyy-MM-dd")+" "+hour+":00:00");
// Last24Hour.add(getDataFormat(lastDate,"yyyy-MM-dd")+" "+hour+":59:59");
// return Last24Hour;
// }
// public static List<String> getLastDay24Hour_hourToDetails(DrillDown drillDown){
// List<String> Last24Hour = new ArrayList<>();
// Date nowDate = new Date();
// String hour = drillDown.getDate();
// Date lastDate = new Date(nowDate.getTime()-1000*60*60*24);
Date lastDate = new Date(nowDate.getTime());
// Last24Hour.add(getDataFormat(lastDate,"yyyy-MM-dd")+" "+hour);
// return Last24Hour;
// }
//
// public static List<String> getLastDay24Hour_hourToSeconds(DrillDown drillDown){
// List<String> Last24Hour = new ArrayList<>();
// Date nowDate = new Date();
// String hour = drillDown.getDate();
// Date lastDate = new Date(nowDate.getTime()-1000*60*60*24);
Date lastDate = new Date(nowDate.getTime());
// Last24Hour.add(getDataFormat(lastDate,"yyyy-MM-dd")+" "+hour+":00");
// Last24Hour.add(getDataFormat(lastDate,"yyyy-MM-dd")+" "+hour+":59");
// return Last24Hour;
// }
/**
* 获取 最近7天的 开始与结束时间点
*
* @return List<String>
*/
public static List<String> getLast7DayDate() {
List<String> Last7Day = new ArrayList<>();
Date nowDate = new Date();
Last7Day.add(getDataFormat(nowDate, DATETIME_FORMAT));
Date lastDayDate = new Date(nowDate.getTime() - DAFAULT_MS * 7);
Last7Day.add(getDataFormat(lastDayDate, DATETIME_FORMAT));
return Last7Day;
}
/**
* 上周一的时间
*
* @param date
* @return
*/
public static Date geLastWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(getThisWeekMonday(date));
cal.add(Calendar.DATE, -7);
return cal.getTime();
}
/***
* 本周
* @param date
* @return
*/
public static Date getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return cal.getTime();
}
/**
* 下周
*
* @param date
* @return
*/
public static Date getNextWeekMonday(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(getThisWeekMonday(date));
cal.add(Calendar.DATE, 7);
return cal.getTime();
}
/**
* 获取 某天前的日期
*
* @param days int
* @return string
*/
public static String getLast7DayDate2(int days) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - days);
Date today = calendar.getTime();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
return format.format(today);
}
//获取今天、明天、后天的具体月、日,以当前系统日期为主:
public static String returnDate(int count) {
Calendar strDate = Calendar.getInstance();
strDate.add(strDate.DATE, count);
SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
return sdf.format(strDate.getTime());
}
// 获得下周星期一的日期
public static String getNextMonday(int count) {
Calendar strDate = Calendar.getInstance();
int day = getDay(strDate);
strDate.add(Calendar.DATE, -(day - 2));
strDate.add(Calendar.WEEK_OF_YEAR, count);
return format(strDate, "yyyy-MM-dd");
}
// 获得下周星期日的日期
public static String getNextSunday(int count) {
Calendar strDate = Calendar.getInstance();
int day = getDay(strDate);
strDate.add(Calendar.DATE, 8 - day);
strDate.add(Calendar.WEEK_OF_YEAR, count);
return format(strDate, "yyyy-MM-dd");
}
// 获得下月第一天
public static String getNextMonthFirst(int count) {
Calendar strDate = Calendar.getInstance();
int day = getDate(strDate);
strDate.add(Calendar.DATE, -(day - 1));
strDate.add(Calendar.MONTH, count);
return format(strDate, "yyyy-MM-dd");
}
// 获得下月最后一天
public static String getNextMonthEnd(int count) {
Calendar strDate = Calendar.getInstance();
int day = getDate(strDate);
strDate.add(Calendar.DATE, -day);
strDate.add(Calendar.MONTH, count + 1);
return format(strDate, "yyyy-MM-dd");
}
public static Date getLastDay(int days) {
Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_MONTH, -days);
return c.getTime();
}
public static Date getLastMonth(int days) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -days);
return c.getTime();
}
private static List<String> getLastMonthList() {
Calendar begin = Calendar.getInstance(); // 得到一个Calendar的实例
begin.setTime(new Date(new Date().getTime() - DAFAULT_MS)); // 设置时间为当前时间
begin.add(Calendar.MONTH, -1); // 月份减1
begin.add(Calendar.DATE, +1); // 日期加0/1
Date result = begin.getTime();
Calendar end = Calendar.getInstance();
Long startTime = begin.getTimeInMillis();
Long endTime = end.getTimeInMillis() - DAFAULT_MS;
List dates = new ArrayList<>();
Long time = startTime;
int i = 0;
while (time <= endTime) {
Date d = new Date(time);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
dates.add(i, df.format(d));
i++;
time += DAFAULT_MS;
}
return dates;
}
public static List<String> getMonth(String quicklTime) {
List<String> month = new ArrayList<>();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy");
switch (quicklTime) {
case "一月":
month.add(sdf2.format(new Date()) + "-01-01 00:00:00");
month.add(sdf2.format(new Date()) + "-01-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "二月":
month.add(sdf2.format(new Date()) + "-02-01 00:00:00");
month.add(sdf2.format(new Date()) + "-02-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 2) + " 23:59:59");
break;
case "三月":
month.add(sdf2.format(new Date()) + "-03-01 00:00:00");
month.add(sdf2.format(new Date()) + "-03-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "四月":
month.add(sdf2.format(new Date()) + "-04-01 00:00:00");
month.add(sdf2.format(new Date()) + "-04-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "五月":
month.add(sdf2.format(new Date()) + "-05-01 00:00:00");
month.add(sdf2.format(new Date()) + "-05-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "六月":
month.add(sdf2.format(new Date()) + "-06-01 00:00:00");
month.add(sdf2.format(new Date()) + "-06-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "七月":
month.add(sdf2.format(new Date()) + "-07-01 00:00:00");
month.add(sdf2.format(new Date()) + "-07-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "八月":
month.add(sdf2.format(new Date()) + "-08-01 00:00:00");
month.add(sdf2.format(new Date()) + "-08-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "九月":
month.add(sdf2.format(new Date()) + "-09-01 00:00:00");
month.add(sdf2.format(new Date()) + "-09-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "十月":
month.add(sdf2.format(new Date()) + "-10-01 00:00:00");
month.add(sdf2.format(new Date()) + "-10-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "十一月":
month.add(sdf2.format(new Date()) + "-11-01 00:00:00");
month.add(sdf2.format(new Date()) + "-11-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
case "十二月":
month.add(sdf2.format(new Date()) + "-12-01 00:00:00");
month.add(sdf2.format(new Date()) + "-12-" + getDaysByYearMonth(Integer.valueOf(sdf2.format(new Date())), 1) + " 23:59:59");
break;
}
return month;
}
/**
* 根据年 月 获取对应的月份 天数
*/
public static String getDaysByYearMonth(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month - 1);
a.set(Calendar.DATE, 1);
a.roll(Calendar.DATE, -1);
int maxDate = a.get(Calendar.DATE);
return String.valueOf(maxDate);
}
/**
* 当前时间
*
* @return date
*/
public static Date currentDate() {
return Calendar.getInstance().getTime();
}
/**
* 得到年
*
* @param c
* @return
*/
public static int getYear(Calendar c) {
if (c != null) {
return c.get(Calendar.YEAR);
} else {
return Calendar.getInstance().get(Calendar.YEAR);
}
}
/**
* 得到月份
* 注意,这里的月份依然是从0开始的
*
* @param c
* @return
*/
public static int getMonth(Calendar c) {
if (c != null) {
return c.get(Calendar.MONTH) + 1;
} else {
return Calendar.getInstance().get(Calendar.MONTH) + 1;
}
}
/**
* 得到日期
*
* @param c
* @return
*/
public static int getDate(Calendar c) {
if (c != null) {
return c.get(Calendar.DATE);
} else {
return Calendar.getInstance().get(Calendar.DATE);
}
}
/**
* 得到星期
*
* @param c
* @return
*/
public static int getDay(Calendar c) {
if (c != null) {
return c.get(Calendar.DAY_OF_WEEK);
} else {
return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
}
}
/**
* 得到小时
*
* @param c
* @return
*/
public static int getHour(Calendar c) {
if (c != null) {
return c.get(Calendar.HOUR_OF_DAY);
} else {
return Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
}
}
/**
* 得到分钟
*/
public static int getMinute(Calendar c) {
if (c != null) {
return c.get(Calendar.MINUTE);
} else {
return Calendar.getInstance().get(Calendar.MINUTE);
}
}
/**
* 得到秒
*/
public static int getSecond(Calendar c) {
if (c != null) {
return c.get(Calendar.SECOND);
} else {
return Calendar.getInstance().get(Calendar.SECOND);
}
}
/**
* 得到指定或者当前时间前n天的Calendar
*/
public static Calendar beforeNDays(Calendar c, int n) {
//偏移量,给定n天的毫秒数
long offset = n * DAFAULT_MS;
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
return calendar;
}
/**
* 得到指定或者当前时间后n天的Calendar
*/
public static Calendar afterNDays(Calendar c, int n) {
//偏移量,给定n天的毫秒数
long offset = n * DAFAULT_MS;
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() + offset);
return calendar;
}
/**
* 指定日期加月份
* @param date 指定日期
* @param addMonths 要加的月份数
* @return Date 计算后的日期
*/
public static Date addMonths(Date date, int addMonths) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, addMonths);
return calendar.getTime();
}
/**
* 当前日期加月份
*
* @param addMonths 要加的月份数
* @return Date 计算后的日期
*/
public static Date addMonths(int addMonths) {
return addMonths(new Date(), addMonths);
}
/**
* 指定日期加天
*
* @param date 指定日期
* @param addDays 要加的天数
* @return Date 计算后的日期
*/
public static Date addDays(Date date, int addDays) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, addDays);
return calendar.getTime();
}
/**
* 当前日期加天
*
* @param addDays 要加的天数
* @return Date 计算后的日期
*/
public static Date addDays(int addDays) {
return addDays(new Date(), addDays);
}
/**
* 指定日期加小时
*
* @param date 指定日期
* @param addHours 要加的小时数
* @return Date 计算后的日期
*/
public static Date addHours(Date date, int addHours) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, addHours);
return calendar.getTime();
}
/**
* 当前日期加小时
*
* @param addHours 要加的小时数
* @return Date 计算后的日期
*/
public static Date addHours(int addHours) {
return addHours(new Date(), addHours);
}
/**
* 指定日期加分
*
* @param date 指定日期
* @param addMinutes 要加的分数
* @return Date 计算后的日期
*/
public static Date addMinutes(Date date, int addMinutes) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, addMinutes);
return calendar.getTime();
}
/**
* 当前日期加分
*
* @param addMinutes 要加的分数
* @return Date 计算后的日期
*/
public static Date addMinutes(int addMinutes) {
return addMinutes(new Date(), addMinutes);
}
/**
* 指定日期加秒
*
* @param date 指定日期
* @param addSeconds 要加的秒数
* @return Date 计算后的日期
*/
public static Date addSeconds(Date date, int addSeconds) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, addSeconds);
return calendar.getTime();
}
/**
* 当前日期加秒
*
* @param addSeconds 要加的秒数
* @return Date 计算后的日期
*/
public static Date addSeconds(int addSeconds) {
return addSeconds(new Date(), addSeconds);
}
/**
* 昨天
*
* @param c
* @return
*/
public static Calendar yesterday(Calendar c) {
long offset = 1 * DAFAULT_MS;
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
return calendar;
}
/**
* 明天
*
* @param c
* @return
*/
public static Calendar tomorrow(Calendar c) {
long offset = 1 * DAFAULT_MS;
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() + offset);
return calendar;
}
/**
* 得到指定或者当前时间前offset毫秒的Calendar
*
* @param c
* @param offset
* @return
*/
public static Calendar before(Calendar c, long offset) {
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
return calendar;
}
/**
* 得到指定或者当前时间前offset毫秒的Calendar
*/
public static Calendar after(Calendar c, long offset) {
Calendar calendar = null;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
calendar.setTimeInMillis(calendar.getTimeInMillis() - offset);
return calendar;
}
/**
* 日期格式化
*/
public static String format(Calendar c, String pattern) {
Calendar calendar;
if (c != null) {
calendar = c;
} else {
calendar = Calendar.getInstance();
}
if (pattern == null || pattern.equals("")) {
pattern = DATETIME_FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(calendar.getTime());
}
/**
* 日期格式化
*/
public static String format(Date date, String pattern) {
Date tempDate = null;
if (date != null) {
tempDate = date;
} else {
tempDate = Calendar.getInstance().getTime();
}
if (pattern == null || pattern.equals("")) {
pattern = DATETIME_FORMAT;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(tempDate);
}
/**
* Date类型转换到Calendar类型
*/
public static Calendar date2Calendar(Date d) {
Calendar c = Calendar.getInstance();
c.setTime(d);
return c;
}
/**
* Calendar类型转换到Date类型
*/
public static Date calendar2Date(Calendar c) {
return c.getTime();
}
/**
* Date类型转换到Timestamp类型
*/
public static Timestamp date2Timestamp(Date d) {
return new Timestamp(d.getTime());
}
/**
* Calendar类型转换到Timestamp类型
*/
public static Timestamp calendar2Timestamp(Calendar c) {
return new Timestamp(c.getTimeInMillis());
}
/**
* Timestamp类型转换到Calendar类型
*/
public static Calendar timestamp2Calendar(Timestamp ts) {
Calendar c = Calendar.getInstance();
c.setTime(ts);
return c;
}
/**
* 得到当前时间的字符串表示
* 格式2020-02-02 12:12:12
*/
public static String getTimeString() {
return format(Calendar.getInstance(), DATETIME_FORMAT);
}
/**
* 标准日期格式字符串解析成Calendar对象
*/
public static Calendar pars2Calender(String s) {
Timestamp ts = Timestamp.valueOf(s);
return timestamp2Calendar(ts);
}
/**
* 传入一个时间后获取减去指定分钟后的时间
*/
public static String getLessMinute(String time, int Less) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = null;
try {
date = fmt.parse(time);
date = addMinutes(date, Less);
} catch (ParseException e) {
e.printStackTrace();
}
String endTime = fmt.format(date);
return endTime;
}
}
java 时间工具类
最新推荐文章于 2024-08-26 14:35:51 发布