java中常用的时间工具类_java 开发中常用日期工具类

public class DateUtils {

public static final String SIMPLE_DATE_FORMAT = "MM月dd日";

public static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd";

public static final String DEFAULT_DATETIME_FORMAT1 = "yyyy-MM-dd HH:mm:ss";

public static final String DEFAULT_DATETIME_FORMAT2 = "yyyy-MM-dd HH:mm";

public static final String DEFAULT_DATETIME_FORMAT3 = "yyyy/MM/dd HH:mm:ss";

public static final String DEFAULT_DATETIME_FORMAT4 = "yyyy-MM-dd HH24:mm:ss";

public static final String DEFAULT_DATETIME_FORMAT5 = "yyyy-MM-dd HH24:mm";

public static final String DEFAULT_DATETIME_FORMAT6 = "YYYY-MM-DD:HH24:MI:SS";

public static final String DEFAULT_DATETIME_FORMAT7 = "yyyy/MM/dd";

public static final String DEFAULT_TIME_FORMAT = "HH:mm:ss";

public static final String OTHER_TIME_FORMAT = "HH:mm";

private static final long HOURS_PER_DAY = 24L;

private static final long MINUTES_PER_HOUR = 60L;

private static final long SECONDS_PER_MINUTE = 60L;

private static final long MILLIONSECONDS_PER_SECOND = 1000L;

private static final long MILLIONSECONDS_PER_MINUTE = 60000L;

private static final long MILLIONSECONDS_SECOND_PER_DAY = 86400000L;

public static TimeZone TIMEZONE_UTC = TimeZone.getTimeZone("UTC");

private static final SimpleDateFormat sdfYear = new SimpleDateFormat("yyyy");

private static final SimpleDateFormat sdfDay = new SimpleDateFormat("yyyy-MM-dd");

private static final SimpleDateFormat sdfDays = new SimpleDateFormat("yyyyMMdd");

private static final SimpleDateFormat sdfTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

private DateUtils() {

}

public static Date getDate(String date) {

return getDate(date, "yyyy-MM-dd", (Date)null);

}

public static Date getMaxDate() {

return getDate("9999-12-31", "yyyy-MM-dd", (Date)null);

}

public static Date getDateTime(String date) {

if (StringUtils.isNotBlank(date)) {

date = date.replaceAll("/", "-");

return getDate(date, "yyyy-MM-dd HH:mm:ss", (Date)null);

} else {

return null;

}

}

public static long getDateMilles(Date date, String format) {

String formateDate = (new SimpleDateFormat(format)).format(date);

try {

return (new SimpleDateFormat(format)).parse(formateDate).getTime();

} catch (ParseException var4) {

var4.printStackTrace();

return 0L;

}

}

public static Date getDate(String date, String format) {

return getDate(date, format, (Date)null);

}

public static Date getDate(String date, String format, Date defVal) {

Date d;

try {

d = (new SimpleDateFormat(format)).parse(date);

} catch (ParseException var5) {

d = defVal;

}

return d;

}

public static String formatDate(Date date) {

return formatDate(date, "yyyy-MM-dd", (String)null);

}

public static String forDatetime(Date date) {

return date != null ? formatDate(date, "yyyy-MM-dd HH:mm:ss", (String)null) : null;

}

public static String formatTime(Date date) {

return formatDate(date, "HH:mm:ss", (String)null);

}

public static String formatTime(Date date, String format) {

return formatDate(date, format, (String)null);

}

public static String formatDate(Date date, String format) {

return formatDate(date, format, (String)null);

}

public static String formatDateTimeZone(Date date, String format, TimeZone timeZone) {

String ret = null;

try {

SimpleDateFormat sdf = new SimpleDateFormat(format);

sdf.setTimeZone(timeZone);

ret = sdf.format(date);

} catch (Exception var5) {

var5.printStackTrace();

}

return ret;

}

public static String formatDate(Date date, String format, String defVal) {

String ret;

try {

ret = (new SimpleDateFormat(format)).format(date);

} catch (Exception var5) {

ret = defVal;

}

return ret;

}

public static Date plusDays(Date date, int days) {

if (date == null) {

date = getToday();

}

return changeDays(date, days);

}

public static Date plusHours(Date date, int hours) {

if (date == null) {

date = getToday();

}

return changeHours(date, hours);

}

public static Date plusMinute(Date date, int minutes) {

if (date == null) {

date = getToday();

}

return changeMinute(date, minutes);

}

public static Date plusMonth(Date date, int months) {

if (date == null) {

date = getToday();

}

return changeMonth(date, months);

}

public static Date plusYear(Date date, int years) {

if (date == null) {

date = getToday();

}

return changeYear(date, years);

}

public static Date getToday() {

return new Date();

}

public static long currentTimeMillis() {

return getToday().getTime();

}

public static java.sql.Date getTodaySqlDate() {

return new java.sql.Date(getToday().getTime());

}

public static String getTodayStr(Date date, String format) {

if (date == null) {

date = getToday();

}

if (StringUtils.isBlank(format)) {

format = "yyyy-MM-dd";

}

return formatDate(date, format);

}

public static int intervalDay(Date d1, Date d2) {

if (d1 == null) {

d1 = getToday();

}

long intervalMillSecond = setToDayStartTime(d1).getTime() - setToDayStartTime(d2).getTime();

return (int)(intervalMillSecond / 86400000L);

}

public static int intervalMinutes(Date date1, Date date2) {

long intervalMillSecond = date1.getTime() - date2.getTime();

return (int)(intervalMillSecond / 60000L + (long)(intervalMillSecond % 60000L > 0L ? 1 : 0));

}

public static int intervalSeconds(Date date1, Date date2) {

long intervalMillSecond = date1.getTime() - date2.getTime();

return (int)(intervalMillSecond / 1000L + (long)(intervalMillSecond % 1000L > 0L ? 1 : 0));

}

public static Date setToDayStartTime(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setTimeInMillis(date.getTime());

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.set(14, 0);

return calendar.getTime();

}

public static Date setToDayEndTime(Date date) {

Calendar calendar = Calendar.getInstance();

calendar.setTimeInMillis(date.getTime());

calendar.set(11, 23);

calendar.set(12, 59);

calendar.set(13, 59);

calendar.set(14, 0);

return calendar.getTime();

}

public static String getDateStatus() {

Calendar cal = Calendar.getInstance();

int hour = cal.get(11);

if (hour >= 6 && hour < 12) {

return "morning";

} else if (hour >= 12 && hour < 18) {

return "noon";

} else {

return hour >= 18 && hour < 24 ? "evning" : "midnight";

}

}

public static int getAge(Date birthday) {

Calendar now = Calendar.getInstance();

Calendar birth = Calendar.getInstance();

birth.setTime(birthday);

int year = birth.get(1);

int age = now.get(1) - year;

now.set(1, year);

age = now.before(birth) ? age - 1 : age;

return age;

}

public static boolean isSameDate(Date d1, Date d2) {

if (d1 != null && d2 != null) {

Calendar c1 = Calendar.getInstance();

c1.setTimeInMillis(d1.getTime());

Calendar c2 = Calendar.getInstance();

c2.setTimeInMillis(d2.getTime());

return c1.get(1) == c2.get(1) && c1.get(2) == c2.get(2) && c1.get(5) == c2.get(5);

} else {

return false;

}

}

public static boolean isContinueDay(Date d1, Date d2) {

if (d1 != null && d2 != null) {

return intervalDay(d1, d2) == 1;

} else {

return false;

}

}

public static Date truncDate(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

return c.getTime();

}

public static Date truncDateHour(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(12, 0);

c.set(13, 0);

return c.getTime();

}

public static String getCnDecade(Date input) {

String day = formatDate(input);

String decade = day.replaceAll("01日", "上旬").replaceAll("11日", "中旬").replaceAll("21日", "下旬");

return decade;

}

public static Date getTodayZero() {

Calendar c = Calendar.getInstance();

c.setTime(new Date());

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

return c.getTime();

}

public static Date getTheDayBefore(Date date) {

return new Date(date.getTime() - 86400000L);

}

public static Date[] getTenDayBefore() {

Date[] ret = new Date[2];

Calendar c = Calendar.getInstance();

c.setTime(new Date());

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

int day = c.get(5);

if (day < 10) {

c.set(5, 1);

ret[1] = new Date(c.getTime().getTime());

c.setTime(getTheDayBefore(c.getTime()));

c.set(5, 21);

ret[0] = new Date(c.getTime().getTime());

} else if (10 < day && day <= 20) {

c.set(5, 1);

ret[0] = new Date(c.getTime().getTime());

c.set(5, 11);

ret[1] = new Date(c.getTime().getTime());

} else {

c.set(5, 11);

ret[0] = new Date(c.getTime().getTime());

c.set(5, 21);

ret[1] = new Date(c.getTime().getTime());

}

return ret;

}

public static Date[] getCurrentTenDay(Date input) {

Date[] ret = new Date[2];

Calendar c = Calendar.getInstance();

c.setTime(input);

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

int day = c.get(5);

if (day < 10) {

c.set(5, 1);

ret[0] = new Date(c.getTime().getTime());

c.set(5, 11);

ret[1] = new Date(c.getTime().getTime());

} else if (10 < day && day <= 20) {

c.set(5, 11);

ret[0] = new Date(c.getTime().getTime());

c.set(5, 21);

ret[1] = new Date(c.getTime().getTime());

} else {

c.set(5, 21);

ret[0] = new Date(c.getTime().getTime());

ret[1] = getNextMonthFirst(c.getTime());

}

return ret;

}

public static Date getNextMonthFirst(Date date) {

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

c.add(2, 1);

c.set(5, 1);

return c.getTime();

}

public static Date[] getTheMonthBefore(Date date) {

Date[] ret = new Date[2];

Calendar c = Calendar.getInstance();

c.setTime(date);

c.set(11, 0);

c.set(12, 0);

c.set(13, 0);

c.set(5, 1);

ret[1] = new Date(c.getTime().getTime());

c.setTime(getTheDayBefore(c.getTime()));

c.set(5, 1);

ret[0] = new Date(c.getTime().getTime());

return ret;

}

public static Integer getCurrentQuarter() {

int month = Integer.parseInt(formatDate(new Date(), "MM"));

int quarter = 0;

if (month >= 1 && month <= 3) {

quarter = 1;

} else if (month >= 4 && month <= 6) {

quarter = 2;

} else if (month >= 7 && month <= 9) {

quarter = 3;

} else if (month >= 10 && month <= 12) {

quarter = 4;

}

return Integer.valueOf(quarter);

}

public static Map getQuarterToYearMonthDay(Integer year, Integer quarter) {

if (year != null && year.intValue() > 0 && quarter != null && quarter.intValue() > 0) {

Map map = new HashMap();

if (quarter.intValue() == 1) {

map.put("startTime", year + "-01-" + getMonthDays(year, Integer.valueOf(1)) + " 00:00:00");

map.put("endTime", year + "-03-" + getMonthDays(year, Integer.valueOf(3)) + " 23:59:59");

} else if (quarter.intValue() == 2) {

map.put("startTime", year + "-04-" + getMonthDays(year, Integer.valueOf(4)) + " 00:00:00");

map.put("endTime", year + "-06-" + getMonthDays(year, Integer.valueOf(6)) + " 23:59:59");

} else if (quarter.intValue() == 3) {

map.put("startTime", year + "-07-" + getMonthDays(year, Integer.valueOf(7)) + " 00:00:00");

map.put("endTime", year + "-09-" + getMonthDays(year, Integer.valueOf(9)) + " 23:59:59");

} else if (quarter.intValue() == 4) {

map.put("startTime", year + "-10-" + getMonthDays(year, Integer.valueOf(10)) + " 00:00:00");

map.put("endTime", year + "-12-" + getMonthDays(year, Integer.valueOf(12)) + " 23:59:59");

}

return map;

} else {

return null;

}

}

public static Integer getMonthDays(Integer year, Integer month) {

if (year != null && year.intValue() > 0 && month != null && month.intValue() > 0) {

Calendar c = Calendar.getInstance();

c.set(1, year.intValue());

c.set(2, month.intValue());

c.set(5, 1);

c.add(5, -1);

return c.get(5);

} else {

return Integer.valueOf(0);

}

}

public static String getTimeDiffText(Date date1, Date date2) {

long diff = Math.abs(date1.getTime() - date2.getTime()) / 1000L;

long minuteSeconds = 60L;

long hourSeconds = minuteSeconds * 60L;

long daySeconds = hourSeconds * 24L;

long weekSeconds = daySeconds * 7L;

Date min = date1.compareTo(date2) < 0 ? date1 : date2;

if (diff >= weekSeconds) {

return formatDate(min);

} else if (diff >= daySeconds) {

return diff / daySeconds + "天前";

} else if (diff >= hourSeconds) {

return diff / hourSeconds + "小时前";

} else {

return diff >= minuteSeconds ? diff / minuteSeconds + "分钟前" : diff + "秒前";

}

}

public static int getWeek(Date dt) {

int[] week = new int[]{7, 1, 2, 3, 4, 5, 6};

Calendar cal = Calendar.getInstance();

cal.setTime(dt);

int w = cal.get(7) - 1;

if (w < 0) {

w = 0;

}

return week[w];

}

public static Date getCurrentDate(String datePattern) {

try {

return (new SimpleDateFormat(datePattern)).parse(getCurrentDateByString(datePattern));

} catch (ParseException var2) {

var2.printStackTrace();

return null;

}

}

public static String getCurrentDateByString(String datePattern) {

return (new SimpleDateFormat(datePattern)).format(System.currentTimeMillis());

}

public static String getCurrentDateByString(Date date, String datePattern) {

return (new SimpleDateFormat(datePattern)).format(date);

}

public static boolean beforeDate(Date date1, Date date2) {

return date1.before(date2);

}

public static boolean beforeDate(String date1, String date2) {

Date dt1 = null;

Date dt2 = null;

dt1 = getDateTime(date1);

dt2 = getDateTime(date2);

return beforeDate(dt1, dt2);

}

public static boolean betweenDateScope(String date, String from, String end) {

if (date != null && from != null && end != null) {

return !beforeDate(date, from) && beforeDate(date, end);

} else {

return false;

}

}

public static boolean checkTimeRange(String time, String startRange, String endRange) {

String[] s = startRange.split(":");

int totalStart = Integer.parseInt(s[0]) * 3600 + Integer.parseInt(s[1]) * 60 + Integer.parseInt(s[2]);

String[] e = endRange.split(":");

int totalEnd = Integer.parseInt(e[0]) * 3600 + Integer.parseInt(e[1]) * 60 + Integer.parseInt(e[2]);

String[] t = time.split(":");

int timeTotal = Integer.parseInt(t[0]) * 3600 + Integer.parseInt(t[1]) * 60 + Integer.parseInt(t[2]);

return timeTotal >= totalStart && timeTotal <= totalEnd;

}

private static Date changeMinute(Date date, int minutes) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(12, minutes);

return cal.getTime();

}

private static Date changeHours(Date date, int hours) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(11, hours);

return cal.getTime();

}

private static Date changeDays(Date date, int days) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(6, days);

return cal.getTime();

}

private static Date changeYear(Date date, int years) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(1, years);

return cal.getTime();

}

private static Date changeMonth(Date date, int months) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(2, months);

return cal.getTime();

}

public static Date getCurrentDayBegin() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

return calendar.getTime();

}

public static Date getCurrentDayEnd() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 23);

calendar.set(12, 59);

calendar.set(13, 59);

return calendar.getTime();

}

public static Date getLastDayBegin() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.add(5, -1);

return calendar.getTime();

}

public static Date getLastDayEnd() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 23);

calendar.set(12, 59);

calendar.set(13, 59);

calendar.add(5, -1);

return calendar.getTime();

}

public static Date getBeforeYesterdayBegin() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.add(5, -2);

return calendar.getTime();

}

public static Date BeforeYesterdayEnd() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 23);

calendar.set(12, 59);

calendar.set(13, 59);

calendar.add(5, -2);

return calendar.getTime();

}

public static Date getCurrentMonthFirstDay() {

Calendar calendar = Calendar.getInstance();

calendar.add(2, 0);

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.set(5, 1);

return calendar.getTime();

}

public static Date getLastMonthDayBegin() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.add(5, -30);

return calendar.getTime();

}

public static Date getBeginTime() {

Calendar calendar = new GregorianCalendar();

calendar.set(11, 0);

calendar.set(12, 0);

calendar.set(13, 0);

calendar.add(1, -5);

return calendar.getTime();

}

public static String getYear() {

return sdfYear.format(new Date());

}

public static String getDay() {

return sdfDay.format(new Date());

}

public static String getDays() {

return sdfDays.format(new Date());

}

public static String getTime() {

return sdfTime.format(new Date());

}

public static boolean compareDate(String s, String e) {

if (fomatDate(s) != null && fomatDate(e) != null) {

return fomatDate(s).getTime() >= fomatDate(e).getTime();

} else {

return false;

}

}

public static boolean compareDate(Date d1, Date d2) {

return d1.getTime() >= d2.getTime();

}

public static Date fomatDate(String date) {

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

try {

return fmt.parse(date);

} catch (ParseException var3) {

var3.printStackTrace();

return null;

}

}

public static boolean isValidDate(String s) {

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

try {

fmt.parse(s);

return true;

} catch (Exception var3) {

return false;

}

}

public static int getDiffYear(String startTime, String endTime) {

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

try {

int years = (int)((fmt.parse(endTime).getTime() - fmt.parse(startTime).getTime()) / 86400000L / 365L);

return years;

} catch (Exception var4) {

return 0;

}

}

public static long getDaySub(String beginDateStr, String endDateStr) {

long day = 0L;

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

Date beginDate = null;

Date endDate = null;

try {

beginDate = format.parse(beginDateStr);

endDate = format.parse(endDateStr);

} catch (ParseException var8) {

var8.printStackTrace();

}

day = (endDate.getTime() - beginDate.getTime()) / 86400000L;

return day;

}

public static String getAfterDayDate(String days) {

int daysInt = Integer.parseInt(days);

return getAfterDayDate(daysInt);

}

public static String getAfterDayDate(int daysInt) {

Calendar canlendar = Calendar.getInstance();

canlendar.add(5, daysInt);

Date date = canlendar.getTime();

SimpleDateFormat sdfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String dateStr = sdfd.format(date);

return dateStr;

}

public static String getAfterDayWeek(String days) {

int daysInt = Integer.parseInt(days);

Calendar canlendar = Calendar.getInstance();

canlendar.add(5, daysInt);

Date date = canlendar.getTime();

SimpleDateFormat sdf = new SimpleDateFormat("E");

String dateStr = sdf.format(date);

return dateStr;

}

public static String getSearchBeginDate(String date, DateUtils.SearchDateBuff buff) {

StringBuilder builder = new StringBuilder(date);

builder.append(" ").append(buff.toString());

return builder.toString();

}

public static int getCurrentTime() {

return (int)(System.currentTimeMillis() / 1000L);

}

public static String getSpecifiedDayBefore(String specifiedDay, String format, String defaultStr) {

Calendar c = Calendar.getInstance();

Date date = null;

String dayBefore = "";

try {

date = (new SimpleDateFormat(format)).parse(specifiedDay);

c.setTime(date);

int day = c.get(5);

c.set(5, day - 1);

dayBefore = (new SimpleDateFormat(format)).format(c.getTime());

return dayBefore;

} catch (Exception var7) {

return defaultStr;

}

}

public static enum SearchDateBuff {

SEARCH_BEGIN_TIME("00:00:00"),

SEARCH_END_TIME("23:59:59");

private String buff;

private SearchDateBuff(String buff) {

this.buff = buff;

}

public String toString() {

return this.buff;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值