io.leopard.burrow.util.DateUtil Maven / Gradle / Ivy
package io.leopard.burrow.util;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
// protected static final Log logger = LogFactory.getLog(DateUtil.class);
public static final long HOUR = 60 * 60L * 1000L;
public static final int HOUR_SECOND = 60 * 60;
public static final int EIGHT_HOUR_SECOND = 60 * 60 * 8;// 8小时
public static final int DAY_SECOND = 60 * 60 * 24;
public static final long DAY_MILLI_SECOND = DAY_SECOND * 1000L;
public static final long EIGHT_HOUR_MILLI_SECOND = EIGHT_HOUR_SECOND * 1000L;
public final static String FORMAT_STRING = "yyyy-MM-dd HH:mm:ss";
/**
* Date转字符串,格式为yyyy-MM-dd HH:mm:ss
*
* @param date
* 日期
* @return 字符串
*/
public static String date2String(Date date) {
if (date == null) {
return null;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_STRING);
return simpleDateFormat.format(date);
}
/**
* 获取日期
*
* @param date
* 日期
* @return 若date为空,返回当前日期
*/
public static Date defaultDate(Date date) {
if (date == null) {
return new Date();
}
return date;
}
/**
* 获取日期
*
* @param date
* 日期
* @param defaultDate
* 默认日期
* @return 若date为空,返回defaultDate转换后的日期
*/
public static Date defaultDate(Date date, long defaultDate) {
if (date == null) {
return new Date(defaultDate);
}
return date;
}
/**
* 获取日期
*
* @param date
* 日期
* @param defaultDate
* 默认日期
* @return 若date为空,返回defaultDate
*/
public static Date defaultDate(Date date, Date defaultDate) {
if (date == null) {
return defaultDate;
}
return date;
}
/**
* 根据formatString将Date转成字符串
*
* @param date
* 日期
* @param formatString
* 转换格式
* @return 字符串
*/
public static String date2String(Date date, String formatString) {
if (date == null) {
return null;
}
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatString);
return simpleDateFormat.format(date);
}
/**
* 字符串日期转换成Date
*
* @param dateString
* @return
*/
public static Date str2Date(String dateString) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_STRING);
return simpleDateFormat.parse(dateString);
}
catch (ParseException e) {
throw new RuntimeException("时间转化格式错误!" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + FORMAT_STRING + "]");
}
}
/**
* 字符串转成Date
*
* @param dateString
* 字符串日期
* @param defaultDate
* 默认日期
* @return 若出现异常返回默认日期
*/
public static Date str2Date(String dateString, Date defaultDate) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(FORMAT_STRING);
return simpleDateFormat.parse(dateString);
}
catch (Exception e) {
return defaultDate;
}
}
/**
* 字符串日期转Date
*
* @param dateString
* 字符串日期
* @param formatDate
* 转换格式
* @param defaultDate
* 默认日起
* @return 若发生异常返回默认日期
*/
public static Date str2Date(String dateString, String formatDate, Date defaultDate) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatDate);
return simpleDateFormat.parse(dateString);
}
catch (Exception e) {
return defaultDate;
}
}
/**
* 当前时间增加指定的分钟数
*
* @param minute
* 分钟数
* @return 增加分钟数后的Date
*/
public static Date addTime(final int minute) {
long millis = System.currentTimeMillis();
millis = millis + (minute * 60L * 1000L);
Date date = new Date(millis);
return date;
}
/**
* 将Date的HH-mm-ss置为零
*
* @param date
* 日期Date
* @return 转换后的Date
*/
public static Date getOnlyDate(Date date) {
String dateStr = DateUtil.getDate(date);
return DateUtil.toDate(dateStr + " 00:00:00");
}
/**
* 日期Date增加指定天数
*
* @param date
* 日期Date
* @param daynum
* 天数
* @return 增加天数后的Date
*/
public static Date addDate(final Date date, final int daynum) {
int minute = daynum * 60 * 24;
return addTime(date, minute);
}
/**
* 日期Date增加指定分钟数
*
* @param startDate
* 日期Date
* @param minute
* 分钟数
* @return 增加分钟数后的Date
*/
public static Date addTime(final Date startDate, final int minute) {
long millis = startDate.getTime();
millis = millis + (minute * 60L * 1000L);
Date date = new Date(millis);
return date;
}
/**
* 返回当前时间值
*
* @return
*/
public static Date getTime() {
return new Date();
}
/**
* 根据Date获取字符串日期yyyy-MM-dd
*
* @param date
* 日期Date
* @return 字符串日期
*/
public static String getDate(Date date) {
String time = DateUtil.getTime(date);
if (time == null) {
return null;
}
return time.substring(0, 10);
}
/**
* 根据Date获取字符串日期yyyy-MM-dd HH:mm:ss
*
* @param date
* 日期Date
* @return 字符串日期
*/
public static String getTime(Date date) {
if (date == null) {
return null;
}
long millis = date.getTime();
return DateTime.getTime(millis);
}
/**
* 根据指定格式从Date获取字符串日期
*
* @param date
* 日期Date
* @param format
* 转换格式
* @return 字符串日期
*/
public static String getTime(Date date, String format) {
// try {
DateFormat df = new SimpleDateFormat(format);
return df.format(date);
// }
// catch (IllegalArgumentException e) {
// throw new RuntimeException(e.getMessage(), e);
// }
}
/**
* 时间值(毫秒数)转Date
*
* @param time
* 毫秒数
* @return 日期Date
*/
public static Date toDate(Long time) {
if (time == null || time <= 0) {
return null;
}
return new Date(time);
}
/**
* 根据Date获取时间戳
*
* @param date
* 日期Date
* @return 时间值,以毫秒为单位
*/
public static long getTimestamp(final Date date) {
return date.getTime();
}
/**
* 字符串日期转Date
*
* @param datetime
* 字符串日期
* @return 日期Date
*/
public static Date toDate(String datetime) {
if (datetime == null || datetime.length() == 0) {
return null;
}
long time = DateTime.getTimestamp(datetime);
if (time <= 0) {
new Exception("非法日期:" + datetime).printStackTrace();
}
return new Date(time);
}
/**
* 获取秒数(从1970-01-01 00:00:00开始)
*
* @return 秒数
*/
public static int getSeconds() {
int seconds = (int) (System.currentTimeMillis() / 1000L);
return seconds;
}
/**
* 获取秒数(从2010-01-01 00:00:00开始)
*
* @return 秒数
*/
public static int getShortSeconds() {
int seconds = getSeconds();
// 1262275200 = 2010-01-01 00:00:00
return seconds - 1262275200;
}
/**
* 获取秒数(从2010-01-01 00:00:00开始)
*
* @return 秒数
*/
public static int getShortSeconds(Date date) {
// int se = 1334567890;
int seconds = (int) (date.getTime() / 1000L);
// 1262275200 = 2010-01-01 00:00:00
return seconds - 1262275200;
}
/**
* 返回时间值(2010-01-01 00:00:00)增加指定秒数后的日期Date
*
* @param time
* 秒数
* @return 增加秒数后的Date
*/
public static Date toLongDate(Double time) {
if (time == null) {
return null;
}
return toLongDate(time.intValue());
}
/**
* 返回时间值(2010-01-01 00:00:00)增加指定秒数后的日期Date
*
* @param time
* 秒数
* @return 增加秒数后的Date
*/
public static Date toLongDate(int time) {
if (time <= 0) {
return null;
}
int seconds = time + 1262275200;
return new Date(seconds * 1000L);
}
/**
* 根据Date获取秒数
*
* @param date
* 日期Date
* @return 秒数
*/
public static int getSecond(final Date date) {
long time = date.getTime();
return (int) (time / 1000);
}
/**
* 判断传入的日期是否为今天
*
* @return boolean
*/
public static boolean isToday(Date date) {
if (date == null) {
return false;
}
String time = getTime(date);
return DateTime.isToday(time);
}
/**
* 获取当前时间x秒前/后的时间
*
* @param second
* (-x:前 x:后)
* @return
*/
public static Date getBeforeSecond(Date date, int second) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.SECOND, second);
return cal.getTime();
}
/**
* 字符串日期根据指定格式转换成Date
*
* @param dateString
* 字符串日期
* @param formatString
* 转换格式
* @return 转换后的Date
*/
public static Date str2Date(String dateString, String formatString) {
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatString);
return simpleDateFormat.parse(dateString);
}
catch (ParseException e) {
throw new RuntimeException("时间转化格式错误!" + "[dateString=" + dateString + "]" + "[FORMAT_STRING=" + formatString + "]");
}
}
// /**
// * 字符串日期根据指定格式转换成Date
// *
// * @param dateString
// * 字符串日期
// * @param defaultDate
// * 默认日期
// * @param formatString
// * 转换格式
// * @return 转换后的Date,若发送异常返回默认日期
// */
// public static Date str2Date(String dateString, Date defaultDate, String
// formatString) {
// try {
// SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatString);
// return simpleDateFormat.parse(dateString);
// }
// catch (Exception e) {
// return defaultDate;
// }
//
// }
/**
* 判断date1是否早于date2
*
* @param date1
* 日期1
* @param date2
* 日期2
* @return boolean
*/
public static boolean before(Date date1, Date date2) {
if (date1 == null && date2 == null) {
return false;
}
if (date1 == null && date2 != null) {
return false;
}
if (date1 != null && date2 == null) {
return true;
}
return date1.before(date2);
}
/**
* 判断两个时间值是否为同一时间
*
* @param second1
* 时间1
* @param second2
* 时间2
* @return boolean
*/
public static boolean isEqualsDay(int second1, int second2) {
int diffDayCount = getDiffDayCount(second1, second2);
return diffDayCount == 0;
}
// public static int getMonth(Date date) {
// Calendar cld = Calendar.getInstance();
// cld.setTime(date);
// return cld.get(Calendar.MONTH);
// }
//
// public static int getDay(Date date) {
// Calendar cld = Calendar.getInstance();
// cld.setTime(date);
// return cld.get(Calendar.DAY_OF_MONTH);
// }
// public static int getMonth(int second) {
// int hour = (second + EIGHT_HOUR_SECOND) % DAY_SECOND / HOUR_SECOND;
// return hour;
// }
//
// public static int getDay(int second) {
// int hour = (second + EIGHT_HOUR_SECOND) % DAY_SECOND / HOUR_SECOND;
// return hour;
// }
/**
* 根据秒数获取小时
*
* @param second
* 描述
* @return 小时
*/
public static int getHour(int second) {
int hour = (second + EIGHT_HOUR_SECOND) % DAY_SECOND / HOUR_SECOND;
return hour;
}
/**
* 获取两个时间值(以秒为单位)相差的天数
*
* @param postSecond
* 时间1
* @param currentSecond
* 时间2
* @return 相差的天数
*/
public static int getDiffDayCount(int postSecond, int currentSecond) {
int posttimeDay = (postSecond + EIGHT_HOUR_SECOND) / DAY_SECOND;
int currentDay = (currentSecond + EIGHT_HOUR_SECOND) / DAY_SECOND;
// System.out.println("currentDay:" + currentDay + " posttimeDay:" +
// posttimeDay);
return currentDay - posttimeDay;
}
/**
* 计算二个时间相差的天数
*
* @param date1
* 日期
* @param date2
* 日期
* @return 相差的天数
*/
public static int getDays(String date1, String date2) {
// 转换为标准时间
SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date = null;
java.util.Date mydate = null;
try {
date = myFormatter.parse(date1);
mydate = myFormatter.parse(date2);
}
catch (Exception e) {
throw new RuntimeException(e.getMessage(), e);
}
long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
return (int) day;
}
public static int getDayCount(Date date1, Date date2) {
int dayCount1 = DateTime.getDayCount(date1);
int dayCount2 = DateTime.getDayCount(date2);
return (dayCount1 - dayCount2);
}
// public static int getDays(Date date1, Date date2) {
// long day = (date1.getTime() - date2.getTime()) / (24 * 60 * 60 * 1000);
// return (int) day;
// }
// public static void main(String[] args) {
// // int s = 315532800;
// // int seconds =
// // DateUtil.getShortSeconds(DateUtil.toDate("2020-01-01 00:00:00"));
// // System.out.println("seconds:" + seconds);
// System.out.println(DateUtil.getSeconds());
// // int hour = (DateUtil.getSeconds()) % DAY_SECOND / HOUR_SECOND;
//
// int time = DateUtil.getHour(DateUtil.getSeconds());
// System.out.println("time:" + time);
// }
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy