package util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* 日期工具类
* 不进行校验参数date和format的合法性
* 默认数据按照正确格式处理
*/
public class DateUtil {
/**格式:周一、周二、周三、周四、周五、周六、周日*/
private final static String[] week =
{"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
/**格式:星期一、星期二、星期三、星期四、星期五、星期六、星期日*/
private final static String[] week2 =
{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
/**格式:礼拜一、礼拜二、礼拜三、礼拜四、礼拜五、礼拜六、礼拜天*/
private final static String[] week3 =
{"礼拜天", "礼拜一", "礼拜二", "礼拜三", "礼拜四", "礼拜五", "礼拜六"};
/**时间格式:yy,示例:21*/
private static String yy = "yy";
/**时间格式:MM,例如当前时间:2021-02-01 返回示例:02*/
private static String MM = "MM";
/**时间格式:dd,例如当前时间:2021-02-01 返回示例:01*/
private static String dd = "dd";
/**时间格式:yyyy,示例:2021*/
private static String yyyy = yy + "yy";
/**时间格式:yyyyMM,示例:202101*/
private static String yyyyMM = yyyy + "MM";
/**时间格式:yyyyMMdd,示例:20210101*/
private static String yyyyMMdd = yyyyMM + "dd";
/**时间格式:yyyyMMddHHmm,示例:202101011201*/
private static String yyyyMMddHHmm = yyyyMMdd + "HHmm";
/**时间格式:yyyyMMdd,示例:20210101120101*/
private static String yyyyMMddHHmmss = yyyyMMddHHmm + "ss";
/**时间格式:yyyy-MM-dd,示例:2021-01-01*/
private static String yyyy_MM = "yyyy-MM";
/**时间格式:yyyy-MM-dd,示例:2021-01-01*/
private static String yyyy_MM_dd = yyyy_MM + "-dd";
/**时间格式:yyyy-MM-dd HH:mm,示例:2021-01-01 12:01*/
private static String yyyy_MM_ddHHmm = yyyy_MM_dd + " HH:mm";
/**时间格式:yyyy-MM-dd,示例:2021-01-01 12:00:01*/
private static String yyyy_MM_ddHHmmss = yyyy_MM_ddHHmm + ":ss";
/**时间格式:yyyy/MM/dd,示例:2021/01/01*/
private static String yyyy_MM2 = "yyyy/MM";
/**时间格式:yyyy/MM/dd,示例:2021/01/01*/
private static String yyyy_MM_dd2 = yyyy_MM2 + "/dd";
/**时间格式:yyyy/MM/dd HH:mm,示例:2021/01/01 12:01*/
private static String yyyy_MM_ddHHmm2 = yyyy_MM_dd2 + " HH:mm";
/**时间格式:yyyy/MM/dd,示例:2021/01/01 12:00:01*/
private static String yyyy_MM_ddHHmmss2 = yyyy_MM_ddHHmm2 + ":ss";
private static SimpleDateFormat newSimpleDateFormat(String format) {
return new SimpleDateFormat(format);
}
/**
* 根据传入的date,格式化为yy,示例:21
* @param date
* @return
*/
public static String getYear(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yy);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy,示例:2021
* @param date
* @return
*/
public static String getFullYear(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为MM,示例:12
* @param date
* @return
*/
public static String getMonth(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(MM);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为dd,示例:01
* @param date
* @return
*/
public static String getDay(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(dd);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyyMM,示例:202101
* @param date
* @return
*/
public static String yyyyMM(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyyMM);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyyMMdd,示例:20210101
* @param date
* @return
*/
public static String yyyyMMdd(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyyMMdd);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyyMMddHHmm,示例:202101011201
* @param date
* @return
*/
public static String yyyyMMddHHmm(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyyMMddHHmm);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyyMMdd,示例:20210101120101
* @param date
* @return
*/
public static String yyyyMMddHHmmss(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyyMMddHHmmss);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy-MM,示例:2021-01
* @param date
* @return
*/
public static String yyyy_MM(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy-MM-dd,示例:2021-01-01
* @param date
* @return
*/
public static String yyyy_MM_dd(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_dd);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy-MM-dd HH:mm,示例:2021-01-01 12:01
* @param date
* @return
*/
public static String yyyy_MM_ddHHmm(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_ddHHmm);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy-MM-dd HH:mm:ss
* 示例:2021-01-01 12:01:01
* @param date
* @return
*/
public static String yyyy_MM_ddHHmmss(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_ddHHmmss);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy/MM
* 示例:2021/01
* @param date
* @return
*/
public static String yyyy_MM2(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM2);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy/MM/dd
* 示例:2021/01/01
* @param date
* @return
*/
public static String yyyy_MM_dd2(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_dd2);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy/MM/dd HH:mm
* 示例:2021/01/01 12:01
* @param date
* @return
*/
public static String yyyy_MM_ddHHmm2(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_ddHHmm2);
return sdf.format(date);
}
/**
* 根据传入的date,格式化为yyyy/MM/dd HH:mm:ss
* 示例:2021/01/01 12:01:01
* @param date
* @return
*/
public static String yyyy_MM_ddHHmmss2(Date date) {
SimpleDateFormat sdf = newSimpleDateFormat(yyyy_MM_ddHHmmss2);
return sdf.format(date);
}
/**
* 自定义格式化时间格式,返回自定义的时间格式
* @param date
* @param format
* @return
*/
public static String dateToString4Custom(Date date, String format) {
SimpleDateFormat sdf = newSimpleDateFormat(format);
return sdf.format(date);
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyyMM 202101
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyyMM(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyyMM(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyyMMdd 20210101
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyyMMdd(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyyMMdd(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyyMMddHHmm 202101010101
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyyMMddHHmm(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyyMMddHHmm(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyyMMddHHmmss 20210101010101
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyyMMddHHmmss(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyyMMddHHmmss(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy-MM 2021-01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy-MM-dd 2021-01-01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_dd(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_dd(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy-MM-dd HH:mm 2021-01-01 12:01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_ddHHmm(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_ddHHmm(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy-MM-dd HH:mm:ss 2021-01-01 12:01:01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_ddHHmmss(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_ddHHmmss(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy/MM 2021/01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM2(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM2(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy/MM/dd 2021/01/01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_dd2(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_dd2(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy/MM/dd HH:mm 2021/01/01 12:01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_ddHHmm2(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_ddHHmm2(c.getTime());
}
/**
* 传入时间戳,返回时间字符串,返回示例:yyyy/MM/dd HH:mm:ss 2021/01/01 12:01:01
* @param timeMillis
* @return
*/
public static String timeMillis2String4yyyy_MM_ddHHmmss2(long timeMillis) {
Calendar c = Calendar.getInstance();
c.setTimeInMillis(timeMillis);
return yyyy_MM_ddHHmmss2(c.getTime());
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_dd(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_dd).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_ddHHmm(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_ddHHmm).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_ddHHmmss(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_ddHHmmss).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_dd2(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_dd2).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_ddHHmm2(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_ddHHmm2).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyy_MM_ddHHmmss2(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyy_MM_ddHHmmss2).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyyMMdd(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyyMMdd).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyyMMddHHmm(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyyMMddHHmm).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 根据传入的格式化时间转换成时间戳
* @param timeMillis
* @return
*/
public static long dateString2Millis4yyyyMMddHHmmss(String dateTime) {
if (dateTime == null || dateTime.equals("")) {
return 0l;
}
Date date;
try {
date = newSimpleDateFormat(yyyyMMddHHmmss).parse(dateTime);
} catch (ParseException e) {
date = null;
e.printStackTrace();
}
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
/**
* 获取当前时间
* 示例:yyyyMMdd 20210101
* @return
*/
public static String getNowDateyyyyMMdd() {
Date date = new Date();
return yyyyMMdd(date);
}
/**
* 获取当前时间
* 示例:yyyyMMddHHmm 202101011201
* @return
*/
public static String getNowDateyyyyMMddHHmm() {
Date date = new Date();
return yyyyMMddHHmm(date);
}
/**
* 获取当前时间
* 示例:yyyyMMddHHmm 202101011201
* @return
*/
public static String getNowDateyyyyMMddHHmmss() {
Date date = new Date();
return yyyyMMddHHmmss(date);
}
/**
* 获取当前时间
* 示例:yyyy-MM-dd 2021-01-01
* @return
*/
public static String getNowDateyyyy_MM_dd() {
Date date = new Date();
return yyyy_MM_dd(date);
}
/**
* 获取当前时间
* 示例:yyyy-MM-dd HH:mm 2021-01-01 12:01
* @return
*/
public static String getNowDateyyyy_MM_ddHHmm() {
Date date = new Date();
return yyyy_MM_ddHHmm(date);
}
/**
* 获取当前时间
* 示例:yyyy-MM-dd HH:mm:ss 2021-01-01 12:01:01
* @return
*/
public static String getNowDateyyyy_MM_ddHHmmss() {
Date date = new Date();
return yyyy_MM_ddHHmmss(date);
}
/**
* 获取当前时间
* 示例:yyyy/MM/dd 2021/01/01
* @return
*/
public static String getNowDateyyyy_MM_dd2() {
Date date = new Date();
return yyyy_MM_dd2(date);
}
/**
* 获取当前时间
* 示例:yyyy/MM/dd HH:mm 2021/01/01 12:01
* @return
*/
public static String getNowDateyyyy_MM_ddHHmm2() {
Date date = new Date();
return yyyy_MM_ddHHmm2(date);
}
/**
* 获取当前时间
* 示例:yyyy/MM/dd HH:mm:ss 2021/01/01 12:01:01
* @return
*/
public static String getNowDateyyyy_MM_ddHHmmss2() {
Date date = new Date();
return yyyy_MM_ddHHmmss2(date);
}
/**
* 返回指定时间的自定义星期格式数据
* 例如:date=2021-01-01
* week={"周日", "周一", "周二", "周三", "周四", "周五", "周六"}
* 则返回"周五"
* 其中week数组中的值是自定义的
* @param date
* @param week
* @return
*/
public static String getWeekStr2(Date date, String[] week) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week[cal.get(Calendar.DAY_OF_WEEK)];
}
/**
* 根据指定时间,
* 返回{"周日", "周一", "周二", "周三", "周四", "周五", "周六"}数组中的一个
* @param date
* @return
*/
public static String getWeekStr(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week[cal.get(Calendar.DAY_OF_WEEK)];
}
/**
* 根据指定时间,
* 返回{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}数组中的一个
* @param date
* @return
*/
public static String getWeek2Str(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week2[cal.get(Calendar.DAY_OF_WEEK)];
}
/**
* 根据指定时间,
* 返回{"礼拜天", "礼拜一", "礼拜二", "礼拜三", "礼拜四", "礼拜五", "礼拜六"}数组中的一个
* @param date
* @return
*/
public static String getWeek3Str(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return week3[cal.get(Calendar.DAY_OF_WEEK)];
}
/**
* 获取当前时间week
* 返回{"周日", "周一", "周二", "周三", "周四", "周五", "周六"}数组中的一个
* @return
*/
public static String getNowDate2Week() {
Date date = new Date();
return getWeekStr(date);
}
/**
* 获取当前时间week
* 返回{"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}数组中的一个
* @return
*/
public static String getNowDate2Week2() {
Date date = new Date();
return getWeek2Str(date);
}
/**
* 获取当前时间week
* 返回{"礼拜天", "礼拜一", "礼拜二", "礼拜三", "礼拜四", "礼拜五", "礼拜六"}数组中的一个
* @return
*/
public static String getNowDate2Week3() {
Date date = new Date();
return getWeek3Str(date);
}
/**
* @discreption 获取当前时间的n月之前或之后的时间
* @param n int
* @return Date
*/
public static Date getNYear2Date(int n) {
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, n);
return c.getTime();
}
/******* 得到上年日期 *******/
public static Date getLastYear() {
return getNYear2Date(-1);
}
/**
* @discreption 获取当前时间的n月之前或之后的时间
* @param n int
* @return Date
*/
public static Date getNMonth2Date(int n) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, n);
return c.getTime();
}
/******* 得到上月日期 *******/
public static Date getLastMonth() {
return getNMonth2Date(-1);
}
/**
* @discreption 获取当前时间的n天之前或之后的时间
* @param n int
* @return Date
*/
public static Date getNDay2Date(int n) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, n);
return cal.getTime();
}
/******* 得到昨天日期 *******/
public static Date getYesterDay() {
return getNDay2Date(-1);
}
/**
* 获取两个日期之间间隔天数
*
* @param startDate
* @param endDate
* @return
*/
public static String getBetweenDay(Date startDate, Date endDate) {
long day = 0;
try {
day = (endDate.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1000);
} catch (Exception e) {
return "";
}
return day + "";
}
/**
* 获取指定年的最后一天的Date
* @param year
* @return
*/
public static Date getLastDayOfYear(int year) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, 12);
// 设置月份的最后1天
cal.set(Calendar.DATE, 0);
return cal.getTime();
}
/**
* 获取指定年和月的最后一天的Date
* @param year
* @return
*/
public static Date getLastDayOfYearAndMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, month);
// 设置月份的最后1天
cal.set(Calendar.DATE, 0);
return cal.getTime();
}
/**
* 获取指定年的第一天的Date
* @param year
* @return
*/
public static Date getFirstDayOfYear(int year) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, 0);
// 设置月份的最后1天
cal.set(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
/**
* 获取指定年的第一天的Date
* @param year
* @return
*/
public static Date getFirstDayOfYearAndMonth(int year, int month) {
Calendar cal = Calendar.getInstance();
// 设置年份
cal.set(Calendar.YEAR, year);
// 设置月份
cal.set(Calendar.MONTH, month-1);
// 设置月份的最后1天
cal.set(Calendar.DAY_OF_MONTH, 1);
return cal.getTime();
}
}
JAVA最常用时间工具类DateUtil
最新推荐文章于 2024-08-26 14:35:51 发布