package org.jeecg.modules.mdc.util;
|
|
import java.text.ParseException;
|
import java.text.SimpleDateFormat;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.Locale;
|
import java.util.TimeZone;
|
|
/**
|
* Created by bigshow on 2015/9/14.
|
*/
|
public class TimeFieldUtils {
|
|
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 全局显示定义最省事安全
|
|
|
/**
|
* 指定日期的上一天
|
*
|
* @param date
|
* @return
|
*/
|
public static Date theLastDay(Date date) {
|
if (date == null) {
|
return null;
|
}
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(date);
|
cal.add(Calendar.DATE, -1);
|
cal.set(Calendar.HOUR, 0);
|
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.SECOND, 0);
|
return cal.getTime();
|
}
|
|
/**
|
* 指定日期的上一天
|
*
|
* @param dateStr
|
* @return
|
*/
|
public static Date theLastDay(String dateStr) {
|
if (dateStr == null || dateStr.length() < 7) {
|
return null;
|
}
|
try {
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(sdf.parse(dateStr + " 00:00:00"));
|
cal.add(Calendar.DATE, -1);
|
cal.set(Calendar.HOUR, 0);
|
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.SECOND, 0);
|
return cal.getTime();
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 指定日期的下一天
|
*
|
* @param date
|
* @return
|
*/
|
public static Date theNextDay(Date date) {
|
if (date == null) {
|
return null;
|
}
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(date);
|
cal.add(Calendar.DATE, 1);
|
cal.set(Calendar.HOUR, 0);
|
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.SECOND, 0);
|
return cal.getTime();
|
}
|
|
/**
|
* 指定日期的下一天
|
*
|
* @param dateStr
|
* @return
|
*/
|
public static Date theNextDay(String dateStr) {
|
if (dateStr == null || dateStr.length() < 7) {
|
return null;
|
}
|
try {
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(sdf.parse(dateStr + " 00:00:00"));
|
cal.add(Calendar.DATE, 1);
|
cal.set(Calendar.HOUR, 0);
|
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.SECOND, 0);
|
return cal.getTime();
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
|
/**
|
* 判断两个日期是否同一天
|
*
|
* @param d1
|
* @param d2
|
* @return
|
*/
|
public static boolean isEquals(Date d1, Date d2) {
|
Calendar cal1 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal1.get(Calendar.HOUR_OF_DAY);
|
cal1.setTime(d1);
|
cal1.get(Calendar.HOUR_OF_DAY);
|
Calendar cal2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal2.get(Calendar.HOUR_OF_DAY);
|
cal2.setTime(d2);
|
cal2.get(Calendar.HOUR_OF_DAY);
|
if (cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH) && cal1.get(Calendar.DATE) == cal2.get(Calendar.DATE)) {
|
return true;
|
}
|
return false;
|
}
|
|
/**
|
* 指定日期的最大时间
|
*
|
* @param date
|
* @return
|
*/
|
public static Date theDayMaxTime(Date date) {
|
if (date == null) {
|
return null;
|
}
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(date);
|
//cal.add(Calendar.DATE, 1);
|
//cal.set(Calendar.HOUR, 0);
|
//cal.set(Calendar.MINUTE, 0);
|
//cal.set(Calendar.SECOND, 0);
|
String maxTime = cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DATE) + " 23:59:59";
|
try {
|
return sdf.parse(maxTime);
|
} catch (ParseException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
/**
|
* 指定日期的最小时间
|
*
|
* @param date
|
* @return
|
*/
|
public static Date theDayMiniTime(Date date) {
|
if (date == null) {
|
return null;
|
}
|
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
cal.get(Calendar.HOUR_OF_DAY);
|
cal.setTime(date);
|
cal.set(Calendar.HOUR, 0);
|
cal.set(Calendar.MINUTE, 0);
|
cal.set(Calendar.SECOND, 0);
|
return cal.getTime();
|
}
|
|
/**
|
* 计算两个时间间隔长度,单位秒
|
*
|
* @param lessTime
|
* @param moreTime
|
* @return
|
*/
|
public static long duration(Date lessTime, Date moreTime) {
|
Calendar lCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
lCal.get(Calendar.HOUR_OF_DAY);
|
lCal.setTime(lessTime);
|
Calendar mCal = Calendar.getInstance(TimeZone.getTimeZone("GMT+8"), Locale.CHINA);
|
lCal.get(Calendar.HOUR_OF_DAY);
|
mCal.setTime(moreTime);
|
long between = Math.round((mCal.getTime().getTime() - lCal.getTime().getTime()) / 1000.0);//转换成秒
|
return between;
|
}
|
|
/**
|
* 计算同一天 两个时间间隔长度,单位秒
|
*
|
* @param startStr
|
* @param endStr
|
* @return
|
*/
|
public static long durationOneDay(String startStr, String endStr,String isDaySpan) {
|
String[] strartArray = startStr.split(":");
|
String[] endArray = endStr.split(":");
|
Calendar start = Calendar.getInstance();
|
Calendar end = Calendar.getInstance();
|
start.set(Calendar.HOUR_OF_DAY,Integer.parseInt(strartArray[0]));
|
start.set(Calendar.MINUTE,Integer.parseInt(strartArray[1]));
|
start.set(Calendar.SECOND,Integer.parseInt(strartArray[2]));
|
end.set(Calendar.HOUR_OF_DAY,Integer.parseInt(endArray[0]));
|
end.set(Calendar.MINUTE,Integer.parseInt(endArray[1]));
|
end.set(Calendar.SECOND,Integer.parseInt(endArray[2]));
|
if("true".equals(isDaySpan)){
|
end.add(Calendar.DAY_OF_YEAR,1);
|
}
|
return duration(start.getTime(),end.getTime());
|
}
|
}
|