import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class DateUtil {
/**
* 获取当前月份的第一天的00:00:00时
* @return
*/
public static Date getMonthFristDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.HOUR,-12);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取当前月份的最后一天的00:00:00时
* @return
*/
public static Date getMonthLastDay(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
int lastDay = 0;
if(month==2) {
lastDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
}else {
lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
calendar.set(Calendar.DAY_OF_MONTH,lastDay);
calendar.set(Calendar.HOUR,-12);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取当前月份的指定某天 的00:00:00
* @return
*/
public static Date getMonthSomeday(Date date, int many){
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
int maxDay = 0;
if(month==2) {
maxDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
}else {
maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if(many > maxDay){
try{ throw new Exception(); }catch (Exception e){ System.err.println(); }
}
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,many);
calendar.set(Calendar.HOUR,-12);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 获取当前天的指定小时 eg: 2020-10-01 15:00:00
* @param date
* @param many
* @return
*/
public static Date getDaySomehour(Date date, int many){
Calendar calendar = Calendar.getInstance();
if(many > 12 || many < -12){
try{ throw new Exception("小时参数填写不在范围内"); }catch (Exception e){ System.err.println("小时参数填写不在范围内"); }
return null;
}
// -12 是零点
many = many - 12;
calendar.setTime(date);
calendar.set(Calendar.HOUR,many);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/***
* 获取当前年份的指定月份、指定日期 eg:2020-manyMonth-manyDay 00:00:00
* @param date
* @param manyMonth
* @param manyDay
* @return
*/
public static Date getSomeMonthAndSomeDay(Date date, int manyMonth, int manyDay){
Calendar calendar = Calendar.getInstance();
if(manyMonth > 12 || manyMonth <0){
try{ throw new Exception(); }catch (Exception e){ System.err.println("manyMonth参数填写不在范围内"); }
}
int maxDay = 0;
if(manyMonth==2) {
maxDay = calendar.getLeastMaximum(Calendar.DAY_OF_MONTH);
}else {
maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
}
if(manyDay > maxDay || manyDay < 0){
try{ throw new Exception(); }catch (Exception e){ System.err.println("manyDay参数填写不在范围内"); }
}
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH,manyMonth);
calendar.set(Calendar.DAY_OF_MONTH,manyDay);
calendar.set(Calendar.HOUR,-12);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 当前年份减去 many后的年份 eg:2020年 - many = 2019年
* @param date
* @param many
* @return
*/
public static Date getYearSubMany(Date date, int many){
Calendar calendar = Calendar.getInstance();
calendar.getTime();
int oldYear = calendar.get(Calendar.YEAR);
int newYear = oldYear - many;
calendar.set(Calendar.YEAR, newYear);
return calendar.getTime();
}
/**
* 当前月份减去 many后的月份 eg:2020年5月 - many(1) = 2020年4月
* @param date
* @param many
* @return
*/
public static Date getMonthSubMany(Date date, int many){
Calendar calendar = Calendar.getInstance();
calendar.getTime();
int oldMonth = calendar.get(Calendar.MONTH);
int newMonth = oldMonth - many;
calendar.set(Calendar.MONTH, newMonth);
return calendar.getTime();
}
/**
* 日期转换为字符串 格式为 yyyy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static String dateFormatToSecond(Date date){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String formatDate = simpleDateFormat.format(new Date());
return formatDate;
}
/**
* 日期转换为字符串___自定义格式
* @param date
* @return
*/
public static String dateFormatToPattern(Date date, String pattern){
String formatDate = null;
try {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
formatDate = simpleDateFormat.format(new Date());
} catch (Exception e){
System.err.println("日期格式填写错误");
e.printStackTrace();
}
return formatDate;
}
/**
* 新建一个日期
*
* @param year
* @param month
* @param day
* @return
*/
public static Date newDate(int year, int month, int day) {
Calendar c = Calendar.getInstance();
c.clear();
c.set(year, month - 1, day);
return c.getTime();
}
/**
* 新建一个日期
*
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @return
*/
public static Date newDate(int year, int month, int day, int hour, int minute, int second) {
Calendar c = Calendar.getInstance();
c.clear();
c.set(year, month - 1, day, hour, minute, second);
return c.getTime();
}
/**
* 获取当前天 23:59:59.999 的时间
*
* @param date
* @return
*/
public static Date dayEnd(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
return c.getTime();
}
/**
* 获取指定天 23:59:59.999 的时间
*
* @param date
* @return
*/
public static Date someDayEnd(Date date, int many) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, many);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
return c.getTime();
}
/**
* 年首
*
* @param date
* @return
*/
public static Date yearBegin(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_YEAR, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
c.set(Calendar.MILLISECOND, 0);
return c.getTime();
}
/**
* 年末
*
* @param date
* @return
*/
public static Date yearEnd(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_YEAR, c.getActualMaximum(Calendar.DAY_OF_YEAR));
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);
return c.getTime();
}
/**
* 增加、减少指定时数
*
* @param date
* @param hour 要增加的时数(减少则为 负数)
* @return
*/
public static Date addHour(Date date, int hour) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.HOUR, hour);
return c.getTime();
}
/**
* 增加、减少指定天数
*
* @param date
* @param day 要增加的天数(减少则为 负数)
* @return
*/
public static Date addDay(Date date, int day) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, day);
return c.getTime();
}
/**
* 增加、减少指定月数
*
* @param date
* @param month 要增加的月数(减少则为 负数)
* @return
*/
public static Date addMonth(Date date, int month) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, month);
return c.getTime();
}
/**
* 增加、减少指定年数
*
* @param date
* @param year 要增加的年数(减少则为 负数)
* @return
*/
public static Date addYear(Date date, int year) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.YEAR, year);
return c.getTime();
}
/**
* 获取两个日期间的天数
*
* @param startDate
* @param endDate
* @return
*/
public static int amountDays(Date startDate, Date endDate) {
long ms = endDate.getTime() - startDate.getTime();
int ret = (int) (ms / 86400000L);
return ret;
}
/**
* 判断日期间隔是否超过一个月
*
* @param startDt
* @param endDt
* @return
*/
public static boolean checkDate(String startDt, String endDt) {
Long time = DateUtils.parseLong(endDt) - DateUtils.parseLong(startDt);
if (((time < 0) ? (-time) : time) > 2678400000L) {
return true;
}
return false;
}
/**
* 判断日期间隔是否超过一个月
*
* @param startDt 时间戳格式
* @param endDt
* @return
*/
public static boolean checkTimeDate(String startDt, String endDt) {
Long time = Long.valueOf(endDt) - Long.valueOf(startDt);
if (((time < 0) ? (-time) : time) > 2678400000L) {
return true;
}
return false;
}
public static void main(String[] args) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format = simpleDateFormat.format(getMonthSubMany(new Date(), 1));
System.out.println(format);
System.out.println("------------------------------");
System.out.println(dateFormatToPattern(new Date(), "ygyyy-MM-dd HH:mm:ss"));
}
}
日期工具类
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。