@Service
public class DateCommonUtils {
/**
* 生成Id
* 生成规则:[13位当前时间戳]R[1位随机数]
* 生成例:1529546300592R8
*
* @return Id
*/
public static String getNewId() {
Date date = new Date();
Timestamp now = new Timestamp(date.getTime());
double random = Math.random()*9;
DecimalFormat df = new DecimalFormat("0");
String strRandom = df.format(random);
String id = String.valueOf(now.getTime()) + 'R' + strRandom;
return id;
}
/**
* 给时间加小时
* @param day 目标时间 格式:yyyy-MM-dd HH:mm:ss
* @param hours 需要加的时间
* @return 增加后的时间
*/
public static Date addDateHours(Date day, int hours){
Date rtnDate = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
cal.setTime(day);
cal.add(Calendar.HOUR, hours);// 24小时制
rtnDate = cal.getTime();
cal = null;
return rtnDate;
}
/**
* 给日期加天
* @param day 目标日期 格式:yyyy-MM-dd
* @param days 需要加的天数
* @return 增加后的日期
*/
public static Date addDateDays(Date day, int days){
Date rtnDate = null;
Calendar cal = Calendar.getInstance();
cal.setTime(day);
cal.add(Calendar.DATE, days);
rtnDate = cal.getTime();
cal = null;
return rtnDate;
}
/**
* 给日期加年
* @param day 目标日期 格式:yyyy-MM-dd
* @param yrs 需要加的年数
* @return 增加后的日期
*/
public static Date addDateYrs(Date day, int yrs){
Date rtnDate = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(day);
// 如果目标日期是闰年的2/29,加一年之后需要变成3/1
int days = cal.get(Calendar.DAY_OF_MONTH);
if (days == 29) {
day = CommonUtils.addDateDays(day, 1);
cal.setTime(day);
}
// 加年
cal.add(Calendar.YEAR, yrs);
rtnDate = cal.getTime();
cal = null;
return rtnDate;
}
/**
* 给日期加月
* @param day 目标日期 格式:yyyy-MM-dd
* @param months 需要加的月数
* @return 增加后的日期
*/
public static Date addDateMonths(Date day, int months){
Date rtnDate = null;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(day);
// 加月
cal.add(Calendar.MONTH, months);
rtnDate = cal.getTime();
cal = null;
return rtnDate;
}
/**
* 获取日期所属月第一天的日期
* @param day 目标日期 格式:yyyy-MM-dd
* @return 第一天的日期
* @throws ParseException
*/
public static Date getFirstDay(Date day){
Date rtnDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 去掉时分秒等
String strDay = sdf.format(day);
try {
day = sdf.parse(strDay);
} catch (ParseException e) {
e.printStackTrace();
}
//获取当前月第一天
Calendar cal = Calendar.getInstance();
cal.setTime(day);
cal.add(Calendar.MONTH, 0);
cal.set(Calendar.DAY_OF_MONTH,1);//设置为1号
rtnDate = cal.getTime();
System.out.println(sdf.format(rtnDate));
return rtnDate;
}
/**
* 去掉日期时分秒
* @param day 目标日期 格式:yyyy-MM-dd
* @return
* @throws ParseException
*/
public static Date getOnlyDay(Date day){
Date rtnDate = null;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 去掉时分秒等
String strDay = sdf.format(day);
try {
rtnDate = sdf.parse(strDay);
} catch (ParseException e) {
e.printStackTrace();
}
return rtnDate;
}
/**
* 返回日期相差天数
* 不满24小时算为差0天
*
* @param startDate
* @param endDate
* @return
*/
public static int dateDiffrent(Date startDate, Date endDate) {
if (startDate != null && endDate != null) {
long startTime = startDate.getTime();
long endTime = endDate.getTime();
int days = (int) ((endTime - startTime) / (1000*3600*24));
return days;
} else {
return 0;
}
}
/**
* 比较日期大小
*
* @param startDate
* @param endDate
* @return 1:大于 0:等于 -1:小于
*/
public static int dateCompare(Date startDate, Date endDate) {
if (startDate != null && endDate != null) {
long startTime = startDate.getTime();
long endTime = endDate.getTime();
if (startTime > endTime) {
return 1;
} else if (startTime == endTime) {
return 0;
} else {
return -1;
}
} else {
return 0;
}
}
/**
* 格式化日期
* @param obj
* @param format 例:yyyy-MM-dd
* @return
*/
public static String formatDate(Date obj, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
if (obj != null) {
return sdf.format(obj);
} else {
return null;
}
}
}
时间工具类
最新推荐文章于 2024-03-14 11:26:08 发布