package univit.inspect.base.common;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import wherever.javabase.utility.HYDateTime;
public class DateUtil {
public final static long DAYNUM = 24 * 60 * 60 * 1000;
public final static long HOUSENUM = 60 * 60 * 1000;
public final static long MINUTESNUM = 60 * 1000;
public final static long SECONDNUM = 1000;
/**
* 获取字符串对应的指定格式的日期对象
* @param dateTime 日期字符串
* @param format 日期格式
* @return
*/
public static Date getDateObject(String dateTime,String format)
{
SimpleDateFormat sd = new SimpleDateFormat(format);
ParsePosition pos = new ParsePosition(0);
Date fristDate = sd.parse(dateTime, pos);
return fristDate;
}
/**
* 比较两个时间的值的大小
* @param fristTime 第一个时间
* @param secondTime 第二个时间
* @return 如果第一个时间比第二个时间小则返回true,否则返回false
*/
public static boolean compareDate(String fristTime,String secondTime)
{
Date fristDate = getDateObject(fristTime,"yyyy-MM-dd HH:mm:ss");
Date secondDate = getDateObject(secondTime,"yyyy-MM-dd HH:mm:ss");
return compareDate(fristDate,secondDate);
}
/**
* 比较两个时间的值的大小
* @param fristTime 第一个时间
* @param secondTime 第二个时间
* @return
*/
public static boolean compareDate(Date fristTime,Date secondTime)
{
//将两个日期转换为long型
long fristTimeNum = fristTime.getTime();
long secondTimeNum = secondTime.getTime();
//判定:如果第一个时间比第二个时间小则返回true,否则返回false
return secondTimeNum >= fristTimeNum;
}
/**
* 根据给定时间和时间间隔计算得出周期时间内的上一个时间
* @param starTime 给定时间
* @param TimeInterval 间隔时间(以小时为单位)
* @return 计算得到的旧时间
*/
public static Date reverseAgoDate(Date starTime,Integer TimeInterval)
{
//将TimeInterval转换为以微秒为单位的数
Long microsecond = TimeInterval * 60 * 60 * 1000L;
Long newTime = starTime.getTime() - microsecond;
Date newDate = new Date(newTime);
return newDate;
}
/**
* 根据开始时间和时间间隔计算得出下一个时间
* @param starTime 开始时间
* @param TimeInterval 间隔时间(以小时为单位)
* @return 计算得到的新时间
*/
public static String reverseAgoDate(String starTimestr,Integer TimeInterval)
{
Date startDate = getDateObject(starTimestr,"yyyy-MM-dd HH:mm:ss");
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(reverseAgoDate(startDate,TimeInterval));
}
/**
* 根据开始时间和时间间隔计算得出下一个时间
* @param starTime 开始时间
* @param TimeInterval 间隔时间(以小时为单位)
* @return 计算得到的新时间
*/
public static Date forwordNextDate(Date starTime,Integer TimeInterval)
{
//将TimeInterval转换为以微秒为单位的数
Long microsecond = TimeInterval * 60 * 60 * 1000L;
Long newTime = starTime.getTime() + microsecond;
Date newDate = new Date(newTime);
return newDate;
}
/**
* 根据开始时间和时间间隔计算得出下一个时间
* @param starTime 开始时间
* @param TimeInterval 间隔时间(以小时为单位)
* @return 计算得到的新时间
*/
public static String forwordNextDate(String starTimestr,Integer TimeInterval)
{
Date startDate = getDateObject(starTimestr,"yyyy-MM-dd HH:mm:ss");
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(forwordNextDate(startDate,TimeInterval));
}
/**
* 计算两个日期直接的间隔小时(str)
* @param startTime
* @param endTime
* @return
*/
public static int getIntervalHouse(String startTime,String endTime)
{
Date startDate = getDateObject(startTime,"yyyy-MM-dd HH:mm:ss");
Date endDate = getDateObject(endTime,"yyyy-MM-dd HH:mm:ss");
return getIntervalHouse(startDate,endDate);
}
/**
* 计算两个日期直接的间隔小时
* @param startTime
* @param endTime
* @return
*/
public static int getIntervalHouse(Date startTime,Date endTime)
{
int result = 0;
long intervalTime = endTime.getTime() - startTime.getTime();
if(intervalTime > HOUSENUM)
{
long houseCount = 0;
long count = intervalTime/HOUSENUM;
while(count > 0)
{
houseCount += count;
intervalTime -= HOUSENUM * count;
count = intervalTime/HOUSENUM;
}
result = (int)houseCount;
return result;
}
else
{
return ++result;
}
}
/**
* 计算两个日期直接的间隔时间
* @param startTime
* @param endTime
* @return 返回间隔
*/
public static String getInterval(Date startTime,Date endTime)
{
long intervalTime = endTime.getTime() - startTime.getTime();
String result = "";
if(intervalTime > DAYNUM)
{
long dayCount = 0;
long count = intervalTime/DAYNUM;
while(count > 0)
{
dayCount += count;
intervalTime -= DAYNUM * count;
count = intervalTime/DAYNUM;
}
result = result + dayCount + "天-";
}
if(intervalTime > HOUSENUM)
{
long houseCount = 0;
long count = intervalTime/HOUSENUM;
while(count > 0)
{
houseCount += count;
intervalTime -= HOUSENUM * count;
count = intervalTime/HOUSENUM;
}
result = result + houseCount + "小时-";
}
if(intervalTime > MINUTESNUM)
{
long minutesCount = 0;
long count = intervalTime/MINUTESNUM;
while(count > 0)
{
minutesCount += count;
intervalTime -= MINUTESNUM * count;
count = intervalTime/MINUTESNUM;
}
result = result + minutesCount + "分钟-";
}
if(intervalTime > SECONDNUM)
{
long secondCount = 0;
long count = intervalTime/SECONDNUM;
while(count > 0)
{
secondCount += count;
intervalTime -= SECONDNUM * count;
count = intervalTime/SECONDNUM;
}
result = result + secondCount + "秒-";
}
result = result.substring(0, result.lastIndexOf('-'));
return result;
}
/**
* 计算两个日期直接的间隔时间(传入两个日期字符串)
* @param startTime
* @param endTime
* @return 返回间隔
*/
public static String getInterval(String startTime,String endTime)
{
Date startDate = getDateObject(startTime,"yyyy-MM-dd HH:mm:ss");
Date endDate = getDateObject(endTime,"yyyy-MM-dd HH:mm:ss");
return getInterval(startDate,endDate);
}
/**
* @param hourNum
* @param dateTime
* @return
*/
@SuppressWarnings("unused")
private static String dateTime_HourNum(int hourNum, HYDateTime dateTime) {
String oneHoursAgoTime = "";
Calendar cal = Calendar.getInstance();
cal.set(dateTime.getYear(), dateTime.getMonth() - 1, dateTime.getDay(),
dateTime.getHour(), dateTime.getMinute(), dateTime.getSecond());
cal.add(Calendar.HOUR_OF_DAY, hourNum * -1);
oneHoursAgoTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.format(cal.getTime());
return oneHoursAgoTime;
}
/**
* 根据给定的时间,计算n天以后的这个时间
* @param date
* @param n
* @return
*/
@SuppressWarnings("static-access")
public static String getN_Day_DateTime(String date, int n){
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ParsePosition pos = new ParsePosition(0);
Date datestr = formatter.parse(date, pos);
Calendar calendar = new GregorianCalendar();
calendar.setTime(datestr);
calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
datestr=calendar.getTime(); //这个时间就是日期往后推一天的结果
return formatter.format(datestr);
}
/**
* 获取当前的日期和时间
* @param format 格式
* @return
*/
public static String getNowDateTime(String format){
SimpleDateFormat formatter = new SimpleDateFormat(format==null?"yyyy-MM-dd HH:mm:ss":format);
return formatter.format(new Date());
}
public static void main(String[] args) {
// Date now = new Date();
// System.out.println("现在的日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
// System.out.println("之后的日期:"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(forwordNextDate(now,24)));
//
// System.out.println(getInterval("2013-12-25 16:41:48","2013-12-25 18:48:48"));
//
// System.out.println(getIntervalHouse("2013-12-25 18:41:48","2013-12-25 18:48:48"));
//
// Date now1 = new Date(0);
// System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now1));
// DateUtil.getN_Day_DateTime("2013-12-31 08:00:00", 1);
System.out.println(compareDate("2013-12-31 08:00:00","2013-12-31 08:00:00"));
System.out.println(DateUtil.compareDate("2013-12-31 08:00:00","2013-12-31 08:00:00"));
}
}
日期处理类
最新推荐文章于 2022-03-31 10:01:42 发布