思路:自定义SimpleDateFormat模板, 用 Calendar的对象进行日期的操作,获取的时候根据自己的需求用模板进行获取,然后转换成时间戳的格式即可。
/**
* 时间获取公共类,精确版
* 返回值统一采用Timestamp格式进行数据操作
* @author Sure
* @date 2020/7/9 17:03
*/
public class DateCommon {
public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
public static final SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd 23:59:59");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-01-01 00:00:00");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("yyyy-12-31 23:59:59");
/**
* 获取当前时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getCurrentTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, 0);
Date start = c.getTime();
return Timestamp.valueOf(sdf.format(start));
}
/**
* 获取今天开始时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getTodayStartTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, 0);
Date start = c.getTime();
return Timestamp.valueOf(sdf2.format(start));
}
/**
* 这个方法需要传参,自定义月数
* 获取某月最后一天,0当前月,1上一月;
* @return String
* @author Sure
**/
public static Timestamp getMonthEnd(int time) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -time);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
Date start = c.getTime();
String s= new SimpleDateFormat("yyyy-MM-dd").format(start) + " 23:59:59";
return Timestamp.valueOf(s);
}
/**
* 自定义月数
* 获取某月开始日期,0是当前月,1是上一月
* @return String
* @author Sure
**/
public static Timestamp getMonthStart(int time) {
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -time);
c.set(Calendar.DAY_OF_MONTH, 1);
Date start = c.getTime();
return Timestamp.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(start) + " 00:00:00");
}
/**
* 获取昨日开始时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getYesterdayStartTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, -1);
Date start = c.getTime();
return Timestamp.valueOf(sdf2.format(start));
}
/**
* 获取昨日结束时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getYesterdayEndTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE, -1);
Date start = c.getTime();
return Timestamp.valueOf(sdf3.format(start));
}
/**
* 获取今年开始时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getThisYearStartTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.YEAR, 0);
Date start = c.getTime();
return Timestamp.valueOf(sdf4.format(start));
}
/**
* 获取今年结束时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getThisYearEndTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.YEAR, 0);
Date start = c.getTime();
return Timestamp.valueOf(sdf5.format(start));
}
/**
* 获取去年开始时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getFrontYearStartTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.YEAR, -1);
Date start = c.getTime();
return Timestamp.valueOf(sdf4.format(start));
}
/**
* 获取去年结束时间
* @return Timestamp
* @author Sure
**/
public static Timestamp getFrontYearEndTime() {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.YEAR, -1);
Date start = c.getTime();
return Timestamp.valueOf(sdf5.format(start));
}
//上述方法均由以下方法演变而来,永不到的暂时注掉
// /**
// * 当前时间往前某一年的方法供调用
// *
// * @param time
// * @param format
// * @return
// */
// public static String getFrontYear(int time, SimpleDateFormat format) {
// Calendar c = Calendar.getInstance();
// c.setTime(new Date());
// c.add(Calendar.YEAR, -time);
// Date start = c.getTime();
// return format.format(start);
// }
// /**
// * 当前时间往前某一天的方法供调用
// *
// * @param time
// * @param format
// * @return
// */
// public static String getFrontDay(int time, SimpleDateFormat format) {
// Calendar c = Calendar.getInstance();
// c.setTime(new Date());
// c.add(Calendar.DATE, -time);
// Date start = c.getTime();
// return format.format(start);
// }
// /**
// * 获取当前时间
// *
// * @return String类型的yyyy-MM-dd
// */
// public static String getDate() {
// Date now = new Date();
// return FORMAT.format(now);
// }
//
// /**
// * 获取当前时间
// *
// * @return sql.Date类型的yyyy-MM-dd
// */
// public static java.sql.Date getDateTime() {
// Date now = new Date();
// java.sql.Date d = new java.sql.Date(now.getTime());
// return d;
// }
//
// //--当前时间往前某一天
// public static String getFrontDay(int time) {
// Calendar c = Calendar.getInstance();
// c.setTime(new Date());
// c.add(Calendar.DATE, -time);
// Date start = c.getTime();
// return FORMAT.format(start);
// }
//
// //--当前时间后的某一天
// public static String getAfterDay(int time) {
// Calendar c = Calendar.getInstance();
// c.setTime(new Date());
// c.add(Calendar.DATE, +time);
// Date start = c.getTime();
// return FORMAT.format(start);
// }
//
// /**
// * @param time 推进的时间长度
// * @return 当前时间向前推进固定月份
// */
// public static String getFrontMonth(int time) {
// Date now = new Date();
// Date newDate = stepMonth(now, -time);
// return FORMAT.format(newDate);
// }
//
// /**
// * @param time 推进的时间长度
// * @return 当前时间向后推进固定月份
// */
// public static String getAfterMonth(int time) {
// Date now = new Date();
// Date newDate = stepMonth(now, +time);
// return FORMAT.format(newDate);
// }
//
// /**
// * 在给定的日期加上或减去指定月份后的日期
// *
// * @param sourceDate 原始时间
// * @param month 要调整的月份,向前为负数,向后为正数
// * @return
// */
// public static Date stepMonth(Date sourceDate, int month) {
// Calendar c = Calendar.getInstance();
// c.setTime(sourceDate);
// c.add(Calendar.MONTH, month);
// return c.getTime();
// }
//
// /**
// * 获取本月开始日期
// *
// * @return String
// **/
// public static String getMonthStart() {
// Calendar c = Calendar.getInstance();
// c.add(Calendar.MONTH, 0);
// c.set(Calendar.DAY_OF_MONTH, 1);
// Date time = c.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 00:00:00";
// }
//
// /**
// * 获取本月最后一天
// *
// * @return String
// **/
// public static String getMonthEnd() {
// Calendar c = Calendar.getInstance();
// c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
// Date time = c.getTime();
// return new SimpleDateFormat("yyyy-MM-dd").format(time) + " 23:59:59";
// }
//
// /**
// * 获取上一个月的最后一天
// *
// * @return String
// **/
// public static String getLastMonthEnd() {
// Calendar calendar2 = Calendar.getInstance();
// calendar2.set(Calendar.DAY_OF_MONTH, 0);
// return new SimpleDateFormat("yyyy-MM-dd").format(calendar2.getTime()) + " 23:59:59";
// }
//
// /**
// * 获取上年的最后一天
// */
//
// /**
// * 获取当前年最后一天日期
// */
// public static Date getYearLast() {
// Calendar calendar = Calendar.getInstance();
// calendar.clear();
// calendar.set(Calendar.YEAR, Calendar.YEAR);
// calendar.roll(Calendar.DAY_OF_YEAR, -1);
// Date currYearLast = calendar.getTime();
// return currYearLast;
// }
//
// /**
// * 判断两个时间戳是否是同一天
// *
// * @param t1
// * @param t2
// * @return
// */
// public static Boolean isSameDay(Timestamp t1, Timestamp t2) {
// if (t1 == null || t2 == null) {
// return false;
// }
// return DateUtils.isSameDay(new Date(t1.getTime()), new Date(t2.getTime()));
// }
//
// /**
// * 判断时间是否是本周
// *
// * @param t1
// * @return
// */
// public static Boolean isThisWeek(Timestamp t1) {
// Calendar calendar = Calendar.getInstance();
// int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
// calendar.setTime(new Date(t1.getTime()));
// int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
// return paramWeek == currentWeek;
// }
//
// /**
// * 根据传输的格式获取时间
// *
// * @param
// */
// public static String getDateFormat(String s) {
// Date systemDate = new Date();
// DateFormat format1 = new SimpleDateFormat(s);
// return format1.format(systemDate);
// }
//
// //--计算时间相减得出日
// public static long timeReduceReturnDay(Timestamp startTime, Timestamp endTime) {
// return (startTime.getTime() - endTime.getTime()) / (24 * 60 * 60 * 1000);
// }
//
// //--计算时间相减得出分
// public static long timeReduceReturnMin(Timestamp startTime, Timestamp endTime) {
// return (startTime.getTime() - endTime.getTime()) / (60 * 1000);
// }
//
// //--计算两个时间的差值小于十分钟
// public static boolean getTimeDifference(Timestamp formatTime1, Timestamp formatTime2) {
// //SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// long t1 = formatTime1.getTime();
// long t2 = formatTime2.getTime();
// int hours = (int) ((t1 - t2) / (1000 * 60 * 60));//--小时
// int minutes = (int) (((t1 - t2) / 1000 - hours * (60 * 60)) / 60);//--分钟
// //int second = (int) ((t1 - t2) / 1000 - hours * (60 * 60) - minutes * 60);//--秒
// //--大于10分钟
// if (hours < 1 && minutes < 10) {
// return false;
// }
// return true;
// }
//
// //--当前时间减去某些分钟
// //--@param 需要减去的分钟
// public static Timestamp subMinuteGetTime(int minute) {
// Date now = new Date();
// long time = minute * 60 * 1000;
// return new Timestamp(now.getTime() - time);
// }
// //--当前时间加上某些分钟
// //--@param 需要加上的分钟
// public static Timestamp addMinuterGetTime(int minute) {
// Date now = new Date();
// long time = minute * 60 * 1000;
// return Timestamp.valueOf(Utils.getPeriodTimeStr(now.getTime() + time));
// }
}