import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Pattern;
import org.apache.commons.lang3.StringUtils;
/**
* 时间工具类
*/
public class TimeUtils {
/**
* 得到当前时间
*
* @return
*/
public static Timestamp getNow() {
return new Timestamp(System.currentTimeMillis());
}
/**
* 获取某日期本周周一的时间
* @param date
* @return
*/
public static Timestamp getThisWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// 获得当前日期是一个星期的第几天
int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
if (1 == dayWeek) {
cal.add(Calendar.DAY_OF_MONTH, -1);
}
// 设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
cal.setFirstDayOfWeek(Calendar.MONDAY);
// 获得当前日期是一个星期的第几天
int day = cal.get(Calendar.DAY_OF_WEEK);
// 根据日历的规则,给当前日期减去星期几与一个星期第一天的差值
cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);
return new Timestamp(cal.getTime().getTime());
}
/**
* 获取某日期下周周一的时间
* @param date
* @return
*/
public static Timestamp getNextWeekMonday(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(getThisWeekMonday(date));
cal.add(Calendar.DATE, 7);
return new Timestamp(cal.getTime().getTime());
}
/**
* 获取某日期下个月一号的时间
* @param date
* @return
*/
public static Timestamp nextMonthFirstDate(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.add(Calendar.MONTH, 1);
return new Timestamp(cal.getTime().getTime());
}
/**
* 获取当前日期下个月 一号凌晨零点零分的时间
* @param date
* @return
*/
public static Timestamp nextMonthFirstZeroPointDate() {
SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
String format = dft.format(calendar.getTime());
String time=format+" 00:00:00";
Timestamp timestamp = Timestamp.valueOf(time);
return timestamp;
}
// ------------------------------时间格式 Begin------------------------------
/**
* 格式化时间
*
* @param date
* @param fmt
* @return
*/
public static String format(Date date, String fmt) {
if (date == null)
return "";
DateFormat formatter = new SimpleDateFormat(fmt);
return formatter.format(date);
}
/**
* 格式化时间
*
* @param dateTime 时间毫秒值
* @param fmt
* @return
* @author: Mancy
*/
public static String format(Long dateTime, String fmt) {
DateFormat formatter = new SimpleDateFormat(fmt);
return formatter.format(dateTime);
}
/**
* 格式化日期
*
* @param date
* @return
*/
public static String formatDay(Date date) {
if(date == null){
return null;
}
return format(date, "yyyy-MM-dd");
}
/**
* 格式化当前日期
*
* @return
*/
public static String formatDay() {
return format(new Date(System.currentTimeMillis()), "yyyy-MM-dd");
}
/**
* 格式化完整时间 到分
*
* @param date
* @return
*/
public static String formatMinuteTime(Date date) {
if(date == null){
return null;
}
return format(date, "yyyy-MM-dd HH:mm");
}
/**
* 格式化完整时间 到秒
*
* @param date
*/
public static String formatFullTime(Date date) {
if(date == null){
return null;
}
return format(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 格式化当前时间
*
* @return
*/
public static String formatFullTime() {
return format(new Date(System.currentTimeMillis()), "yyyy-MM-dd HH:mm:ss");
}
// ------------------------------时间格式 End------------------------------
// ------------------------------转换时间start----------------------------
/**
* 转换时间
*
* @param dateStr
* @param fmt
*/
public static Timestamp parse(String dateStr, String fmt) {
if (StringUtils.isBlank(dateStr) || StringUtils.isBlank(fmt)) {
return null;
}
DateFormat formatter = new SimpleDateFormat(fmt);
try {
return new Timestamp(formatter.parse(dateStr).getTime());
}
catch (ParseException e) {
e.printStackTrace();
}
return null;
}
/**
* 转换日期
*
* @param dateStr
*/
public static Timestamp parseDay(String dateStr) {
return parse(dateStr, "yyyy-MM-dd");
}
/**
* 转换日期 到时分
*
* @param dateStr
*/
public static Timestamp parseDayMinute(String dateStr) {
return parse(dateStr, "yyyy-MM-dd HH:mm");
}
/**
* 转换完整时间
*
* @param dateStr
*/
public static Timestamp parseFullTime(String dateStr) {
return parse(dateStr, "yyyy-MM-dd HH:mm:ss");
}
// ------------------------------转换时间 End------------------------------
// ------------------------------时间计算 start------------------------------
/**
* 加几天
* @param date 时间
* @param dayNum 要加的天数
* @return
*/
public static Timestamp addDay(Date date, int dayNum) {
if (date == null) {
return null;
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DATE, dayNum);
return new Timestamp(cal.getTime().getTime());
}
/**
* 剩余时间
* hourNum + date - 当前时间 = 剩余时间
* @param date 时间
* @param hourNum 几个小时
*/
public static Timestamp surplusTime(Date date, int hourNum) {
return new Timestamp(surplusTimeLong(date, hourNum));
}
/**
* 剩余时间
* hourNum + date - 当前时间 = 剩余时间
* @param date 时间
* @param hourNum 几个小时
*/
public static long surplusTimeLong(Date date, int hourNum) {
if (date == null) {
return 0l;
}
Date nowDate = getNow();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.HOUR_OF_DAY, hourNum);
Date endDate = cal.getTime();
int com = endDate.compareTo(nowDate);
if (com <= 0) {
return 0l;
}
else {
long surplusTimeLong = endDate.getTime() - nowDate.getTime();
return surplusTimeLong;
}
}
/**
* 上个月的第一天
* @return
*/
public static Timestamp getfirstDate(){
Calendar c=Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-01 00:00:00");
String gtime2 = sdf2.format(c.getTime()); //上月第一天
return parse(gtime2,"yyyy-MM-dd HH:mm:ss");
}
/**
* 上个月的最后一天
* @return
*/
public static Timestamp getEndDate(){
Calendar c=Calendar.getInstance();
c.add(Calendar.MONTH, -1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int lastMonthMaxDay=c.getActualMaximum(Calendar.DAY_OF_MONTH);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), lastMonthMaxDay, 00, 00, 00);
//按格式输出
String gtime = sdf.format(c.getTime()); //上月最后一天
return parse(gtime,"yyyy-MM-dd HH:mm:ss");
}
/**
* 获取指定月份下个月的第一天
* */
public static String getNextMonthFirstDay(String month){
String nextMonthFirstDay = null;
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Date date = dateFormat.parse(month);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
nextMonthFirstDay = sdf.format(calendar.getTime());
} catch (Exception e) {
e.printStackTrace();
}
return nextMonthFirstDay;
}
public static String getLastDayOfMonth(String yearMonth) {
int year = Integer.parseInt(yearMonth.split("-")[0]); //年
int month = Integer.parseInt(yearMonth.split("-")[1]); //月
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);
cal.set(Calendar.MONTH, month); //设置当前月的上一个月
int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天
cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天
// 格式化日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(cal.getTime());
}
/**
* 通过时间秒毫秒数判断两个时间的间隔
* @param date1
* @param date2
* @return
*/
public static int differentDays(Date date1,Date date2)
{
int days = (int) ((date1.getTime() - date2.getTime()) / (1000*3600*24));
return days;
}
/**
* 格式化日期到月
*
* @param date
* @return
*/
public static String formatMonth(Date date) {
return format(date, "yyyy-MM");
}
/**
* 格式化日期到月
*
* @param date
* @return
*/
public static String formatMonthForStr(String dateStr) {
try {
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
SimpleDateFormat formatMonth=new SimpleDateFormat("yyyy-MM"); //加上时间
Date date=sDateFormat.parse(dateStr);
return formatMonth.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 格式化日期到日
*
* @param date
* @return
*/
public static String formatToDay(String dateStr) {
try {
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
SimpleDateFormat formatMonth=new SimpleDateFormat("yyyy-MM-dd"); //加上时间
Date date=sDateFormat.parse(dateStr);
return formatMonth.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 字符串转日期类型
* @param strDate
* @return
* @throws Exception
*/
public static java.sql.Date strToSqlDate(String strDate){
String str = strDate;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date=null;
java.sql.Date sqlDate = null;
try {
date = format.parse(str);
sqlDate = new java.sql.Date(date.getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return sqlDate;
}
// ------------------------------时间计算 end------------------------------
/**
* 获取上个月份
* @param date
* @return
*/
public static String getLastMonth(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
date = calendar.getTime();
return dateFormat.format(date);
}
/**
* 获取上个月份
* @param date
* @return
* @throws ParseException
*/
public static String getUpMonth(String month) throws ParseException{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Date date = dateFormat.parse(month);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1); // 设置为上一个月
date = calendar.getTime();
return dateFormat.format(date);
}
/**
* 获取下个月份
* @param date
* @return
*/
public static String getNextMonth(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) +1); // 设置为上一个月
date = calendar.getTime();
return dateFormat.format(date);
}
/**
* 获取下下个月份
* @param date
* @return
*/
public static String getNextDownMonth(Date date){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(date); // 设置为当前时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) +2); // 设置为上一个月
date = calendar.getTime();
return dateFormat.format(date);
}
/**
* 获取系统当前时间前一天日期近二个月的月份
* @return
* @throws ParseException
*/
public static String getLastTwoMonthsByNow() throws ParseException{
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date()); // 设置为当前时间
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1); // 设置为前一天
Date date = calendar.getTime();
String monthOne = dateFormat.format(date);//当前月
String monthTwo = getUpMonth(monthOne);//上月
String months = monthTwo+","+monthOne;
return months;
}
/**
* 获取系统当前时间前N月的月份
* @return num 前N月
* @throws ParseException
*/
public static String getAgoMonthByNow(int num) {
if(num<1) return null;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date()); // 设置为当前时间
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - num); //减N月
Date date = calendar.getTime();
String month = dateFormat.format(date);//当前月
return month;
}
/**
* 计算两个日期之间相差的天数
* @param date1
* @param date2
* @return
*/
public static int daysBetween(Date date1,Date date2){
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date1Str = dateFormat.format(date1);
String date2Str = dateFormat.format(date2);
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
date1 = dateFormat2.parse(date1Str);
date2 = dateFormat2.parse(date2Str);
} catch (Exception e) {
}
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
long time1 = cal.getTimeInMillis();
cal.setTime(date2);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 时间比较大小
* @param date1
* @param date2
* @return 1 date1>date2
*/
public static String timeComparisonSize (Timestamp date1,Timestamp date2){
if (date1.getTime()>date2.getTime()) {
return "1";
}else {
return "0";
}
}
/**
* 传入开始时间 和结束时间 返回 开始时间和结束时间段内的每一天数据 (包含开始时间和结束时间)
*/
public static List<String> getYearMonthDateList(String startTime,String endTime ){
List<String> result = new ArrayList<String>();
Date d1;
try {
d1 = new SimpleDateFormat("yyyy-MM-dd").parse(startTime);
Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(endTime);//定义结束日期
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(d1);//设置日期起始时间
while(dd.getTime().before(d2)||dd.getTime().equals(d2)){//判断是否到结束日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String str = sdf.format(dd.getTime());
result.add(str);
dd.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
return null;
}//定义起始日期
return result;
}
/**
* 传入一个时间 和 之后的天数(只算工作日) 得出最后的工作日日期
* @param startTime 开始时间
* @param afterDay 向后加的工作日时间
* @return
*/
public static String getAfterDay(Timestamp startTime, int afterDay){
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(startTime);//设置日期起始时间
for (int i = 0; i < afterDay; i++) {
if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.FRIDAY) {
dd.add(Calendar.DATE, 3);
}else if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY) {
dd.add(Calendar.DATE, 2);
}else {
dd.add(Calendar.DATE, 1);
}
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(dd.getTime());
}
/**
* 传入一个时间 和 之前的天数(只算工作日) 得出最之前的工作日日期
* @param startTime
* @param beforeDay
* @return
*/
public static String getBeforeDay(Timestamp startTime, int beforeDay){
Calendar dd = Calendar.getInstance();//定义日期实例
dd.setTime(startTime);//设置日期起始时间
for (int i = 0; i < beforeDay; i++) {
if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY) {
dd.add(Calendar.DATE, -3);
}else if (dd.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY) {
dd.add(Calendar.DATE, -2);
}else {
dd.add(Calendar.DATE, -1);
}
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
return sdf.format(dd.getTime());
}
/**
* 两个时间比较 如果第一个时间大于等于第二个时间 返回true 其他返回false
* @param dataStr1
* @param dataStr2
* @param fmt
* @return
*/
public static boolean dateStrComparison(String dataStr1,String dataStr2,String fmt){
try {
DateFormat dateFormat = new SimpleDateFormat(fmt);
boolean b=dateFormat.parse(dataStr1).getTime()>=dateFormat.parse(dataStr2).getTime();
return b;
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/**
* 失效日期和当前时间 比较判断是否过期 过期返回 0过期,未过期返回1
*
* @return
*/
public static String isNotIsExpire(Timestamp overdueDate){
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String overdueDateStr = format.format(overdueDate);// 失效日期年月日
Timestamp overdueTimestamp= Timestamp.valueOf(overdueDateStr+" 00:00:00");// 失效日期 转成 当前时间00:00:00
Date date = new Date();// 新建此时的的系统时间
String isExpire=null;// 是否过期(0是 1否)
if (overdueTimestamp.getTime()>date.getTime()) {
isExpire="1";// 未过期
}else {
isExpire="0";// 已过期
}
return isExpire;
}
/**
* 失效日期和当前时间 比较判断是否过期 过期返回 0过期,未过期返回1
*
* @return
*/
public static String isNotIsExpireByDate(Date overdueDate){
Date date = new Date();// 新建此时的的系统时间
String isExpire=null;// 是否过期(0是 1否)
if (overdueDate.getTime()>date.getTime()) {
isExpire="1";// 未过期
}else {
isExpire="0";// 已过期
}
return isExpire;
}
/**
* 解析bootstrat 时间插件格式
* @param s
* @return
*/
public static List<Long> parse(String s){
try{
List<Long> timestampList=new ArrayList<Long>();
String[] dateArrays=s.split("-");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
timestampList.add(sdf.parse(dateArrays[0]).getTime());
timestampList.add(sdf.parse(dateArrays[1]).getTime()+1000*60*60*24);
return timestampList;
}catch(Exception e){
return null;
}
}
/**
* 解析bootstrat 时间插件格式
* @param
* @return
*/
public static List<String> parseToString(String s){
try{
List<String> list=new ArrayList<String>();
String[] dateArrays=s.split("-");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy/MM/dd");
SimpleDateFormat sdf2=new SimpleDateFormat("yyyy-MM-dd");
list.add(sdf2.format(sdf.parse(dateArrays[0].trim()))+" 00:00:00");
list.add(sdf2.format(sdf.parse(dateArrays[1].trim()))+" 23:59:59");
return list;
}catch(Exception e){
return null;
}
}
/**
* 获取某个日期的开始时间
* @param d
* @return
*/
public static Timestamp getDayStartTime(Date d) {
Calendar calendar=Calendar.getInstance();
if(null!=d){
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
calendar.set(Calendar.MILLISECOND, 0);
return new Timestamp(calendar.getTimeInMillis());
}
/**
* 获取某个日期的结束时间
* @param d
* @return
*/
public static Timestamp getDayEndTime(Date d) {
Calendar calendar=Calendar.getInstance();
if(null!=d){
calendar.setTime(d);
}
calendar.set(calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
calendar.set(Calendar.MILLISECOND, 999);
return new Timestamp(calendar.getTimeInMillis());
}
/**
* 获取上周开始时间
*/
@SuppressWarnings("unused")
public static Date getBeginDayOfLastWeek() {
Date date=new Date();
if (date==null) {
return null;
}
Calendar cal=Calendar.getInstance();
cal.setTime(date);
int dayofweek=cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek==1) {
dayofweek+=7;
}
cal.add(Calendar.DATE, 2-dayofweek-7);
return getDayStartTime(cal.getTime());
}
/**
* 获取上周的结束时间
* @return
*/
public static Date getEndDayOfLastWeek(){
Calendar cal=Calendar.getInstance();
cal.setTime(getBeginDayOfLastWeek());
cal.add(Calendar.DAY_OF_WEEK, 6);
Date weekEndSta = cal.getTime();
return getDayEndTime(weekEndSta);
}
/**
* 获取今年是哪一年
* @return
*/
public static Integer getNowYear(){
Date date = new Date();
GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance();
gc.setTime(date);
return Integer.valueOf(gc.get(1));
}
/**
* 获取本月是哪一月
* @return
*/
public static int getNowMonth() {
Date date = new Date();
GregorianCalendar gc=(GregorianCalendar)Calendar.getInstance();
gc.setTime(date);
return gc.get(2) + 1;
}
/**
* 获取上月的开始时间
* @return
*/
public static Date getBeginDayOfLastMonth() {
Calendar calendar=Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth()-2, 1);
return getDayStartTime(calendar.getTime());
}
/**
* 获取上月的结束时间
* @return
*/
public static Date getEndDayOfLastMonth() {
Calendar calendar=Calendar.getInstance();
calendar.set(getNowYear(), getNowMonth()-2, 1);
int day = calendar.getActualMaximum(5);
calendar.set(getNowYear(), getNowMonth()-2, day);
return getDayEndTime(calendar.getTime());
}
/**
* 获取当前日期是星期几
*
* @param date
* @return 当前日期是星期几
*/
public static String getWeekOfDate(Date date) {
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
if (w < 0)
w = 0;
return weekDays[w];
}
/**
* 获取当前时间前5小时
* @param date
* @return
*/
public static String getFiveHoursAgoDate() {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 5);
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(calendar.getTime());
}
/**
* 将字符串时间格式转换成Date时间格式,参数String类型
* 比如字符串时间:"2017-12-15 21:49:03"
* 转换后的date时间:Fri Dec 15 21:49:03 CST 2017
* @param datetime 类型为String
* @return
*/
public static Date StringToDate(String datetime){
/*if (StringUtils.isEmpty(datetime)) {
return null;
}*/
SimpleDateFormat sdFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdFormat.parse(datetime);
} catch (ParseException e) {
e.printStackTrace();
}
if (date==null) {
try {
date=format.parse(datetime);
} catch (ParseException e) {
e.printStackTrace();
}
}
if (date==null) {
throw new RuntimeException("日期为空日期转化失败");
}
return date;
}
/**
* 获取当前月第一天
*/
public static String getCurrentMonthFirstDay() {
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 0);
c.set(Calendar.DAY_OF_MONTH,1);//设置为1号,当前日期既为本月第一天
String first = format.format(c.getTime());
return first ;
}
/**
* 判断是否是在2到10号
*/
public static boolean isOrNotContainDay() {
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat monthFormat=new SimpleDateFormat("yyyy-MM");
Calendar c = Calendar.getInstance();
String nowDate = format.format(c.getTime());
String monthDate = monthFormat.format(c.getTime());
List<String> dataList=new ArrayList<>();
dataList.add(monthDate+"-02");
dataList.add(monthDate+"-03");
dataList.add(monthDate+"-04");
dataList.add(monthDate+"-05");
dataList.add(monthDate+"-06");
dataList.add(monthDate+"-07");
dataList.add(monthDate+"-08");
dataList.add(monthDate+"-09");
dataList.add(monthDate+"-10");
if (dataList.contains(nowDate)) {
return true ;
}else {
return false ;
}
}
/**
* 三个日期都是年月日
* 获取逾期天数
* @return
*/
public static int getOverdueDay(String dateStr1,String dateStr2,int day){
Timestamp date1 = Timestamp.valueOf(dateStr1+" 00:00:00");
Timestamp date2 = Timestamp.valueOf(dateStr2+" 00:00:00");
Long betweendays=(date1.getTime()-date2.getTime())/(1000*3600*24);
int dayNum=betweendays.intValue()-day;
return dayNum;
};
/**
* 判断是否yyyy-MM-dd HH:mm:ss
* @param date
* @return
*/
public static boolean isDate(String date) {
Pattern p = Pattern.compile("^([1-2]{1}\\d{3})\\-(([0]{1}[1-9]{1})|([1]{1}[0-2]{1}))\\-(([0]{1}[1-9]{1})|([1-2]{1}\\d{1})|([3]{1}[0-1]{1}))\\s(([0-1]{1}\\d{1})|([2]{1}[0-3]))\\:([0-5]{1}\\d{1})\\:([0-5]{1}\\d{1})$");
return p.matcher(date).matches();
}
/**
* 判断时间格式 格式必须为“YYYY-MM-dd”
* @param sDate
* @return
*/
public static boolean isYmdDate(String sDate) {
int legalLen = 10;
if ((sDate == null) || (sDate.length() != legalLen)) {
return false;
}
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = formatter.parse(sDate);
return sDate.equals(formatter.format(date));
} catch (Exception e) {
return false;
}
}
}
超详细的Java常用时间操作工具类
最新推荐文章于 2023-05-04 11:22:38 发布