📄 dateutils.java
字号:
package com.cownew.ctk.common;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtils
{
public static final int ONE_SECOND = 1000;
public static final int ONE_MINUTE = 60000;
public static final int ONE_HOUR = 3600000;
public static final long ONE_DAY = 86400000L;
public static final long ONE_WEEK = 604800000L;
/**
* get the begin of today,2006-09-15 00:00:00 000
* @return
*/
public static Date getBeginOfToday()
{
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
return cal.getTime();
}
/**
* 将java.util.Date转换为java.sql.Date
* @param date
* @return
*/
public static java.sql.Date getSQLDate(Date date)
{
Calendar cal = new GregorianCalendar();
cal.setTime(date);
java.sql.Date sd = new java.sql.Date(cal.getTimeInMillis());
return sd;
}
/**
* get now
* @return
*/
public static Date getNow()
{
Calendar cal = new GregorianCalendar();
return cal.getTime();
}
/**
* 得到当前时间,返回值为java.sql.Date类型
* @return
*/
public static java.sql.Date getSQLNow()
{
return getSQLDate(getNow());
}
/**
* get the begin of day,2006-09-15 00:00:00 000
* @param date
* @return
*/
public static Date getBeginOfDay(Date date)
{
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date ds = new Date(cal.getTimeInMillis());
return ds;
}
/**
* 得到当前日期的凌晨12点59分59秒
* @return
*/
public static Date getEndOfToday()
{
Calendar cal = new GregorianCalendar();
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
cal.set(Calendar.MILLISECOND, 999);
return cal.getTime();
}
/**
* 得到下一天
* @param date
* @return
*/
public static Date getNextDay(Date date)
{
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 1);
return cal.getTime();
}
/**
* 得到上一天
* @return
*/
public static Date getTomorrow()
{
Calendar cal = new GregorianCalendar();
cal.setTime(getBeginOfToday());
cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH) + 1);
return cal.getTime();
}
/**
* 得到指定日期的下一天
* @param date
* @return
*/
public static Date getNextMonth(Date date)
{
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + 1);
return cal.getTime();
}
/**
* 得到指定日期的上一天
* @param date
* @return
*/
public static Date getPreviousDay(Date date)
{
Calendar cal = new GregorianCalendar();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, -1);
return cal.getTime();
}
/**
* 得到两个日期之间的时间间隔
* @param interval
* @param dDate1
* @param dDate2
* @return
*/
public static long dateDiff(DateIntervalTypeEnum interval, Date dDate1,
Date dDate2)
{
int desiredField = 0;
int coef = 1;
Date date1;
Date date2;
if (dDate1.getTime() > dDate2.getTime())
{
coef = -1;
date1 = dDate2;
date2 = dDate1;
} else
{
date1 = dDate1;
date2 = dDate2;
}
int field;
if (interval.equals(DateIntervalTypeEnum.YEAR))
field = Calendar.YEAR;
else if (interval.equals(DateIntervalTypeEnum.MONTH))
field = Calendar.MONTH;
else if (interval.equals(DateIntervalTypeEnum.DAY))
field = Calendar.DAY_OF_MONTH;
else if (interval.equals(DateIntervalTypeEnum.WEEK))
field = Calendar.WEEK_OF_MONTH;
else if (interval.equals(DateIntervalTypeEnum.HOUR))
{
field = Calendar.DATE;
desiredField = Calendar.HOUR_OF_DAY;
} else if (interval.equals(DateIntervalTypeEnum.MINUTE))
{
field = Calendar.DATE;
desiredField = Calendar.MINUTE;
} else if (interval.equals(DateIntervalTypeEnum.SECOND))
{
field = Calendar.DATE;
desiredField = Calendar.SECOND;
} else
{
throw new IllegalArgumentException("unkown interval!");
}
Calendar calTmp = Calendar.getInstance();
calTmp.setTime(date1);
long nbOccurence = 0L;
calTmp.add(field, 1);
Date dateTemp = calTmp.getTime();
while (dateTemp.getTime() <= date2.getTime())
{
calTmp.add(field, 1);
dateTemp = calTmp.getTime();
nbOccurence++;
}
if (desiredField == Calendar.HOUR_OF_DAY
|| desiredField == Calendar.MINUTE
|| desiredField == Calendar.SECOND)
{
calTmp.setTime(date1);
calTmp.add(field, (int) nbOccurence);
dateTemp = calTmp.getTime();
switch (desiredField) {
case Calendar.HOUR_OF_DAY:
nbOccurence *= 24L;
break;
case Calendar.MINUTE:
nbOccurence = nbOccurence * 24L * 60L;
break;
case Calendar.SECOND:
nbOccurence = nbOccurence * 24L * 60L * 60L;
break;
}
calTmp.add(desiredField, 1);
dateTemp = calTmp.getTime();
while (dateTemp.getTime() <= date2.getTime())
{
calTmp.add(desiredField, 1);
dateTemp = calTmp.getTime();
nbOccurence++;
}
}
return nbOccurence * coef;
}
/**
* 得到当前月的第一天
* @return
*/
public static Date getFirstDayOfCurMonth()
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal
.getActualMinimum(Calendar.DAY_OF_MONTH));
return getBeginOfDay(cal.getTime());
}
/**
* 得到当前月的最后一天
* @return
*/
public static Date getEndDayOfCurMonth()
{
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, cal
.getActualMaximum(Calendar.DAY_OF_MONTH));
return getBeginOfDay(cal.getTime());
}
/**
* 格式化日期为"yyyy-MM-dd"形式
* @param d
* @return
*/
public static String formatDate(Date d)
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
return df.format(d);
}
/**
* 得到两个日期中较大者
* @param date1
* @param date2
* @return
*/
public static Date getMax(Date date1, Date date2)
{
if (date1 == null)
return date2;
if (date2 == null)
return date1;
if (date1.after(date2))
return date1;
return date2;
}
/**
* 得到两个日期中较小者
* @param date1
* @param date2
* @return
*/
public static Date getMin(Date date1, Date date2)
{
if (date1 == null)
return date2;
if (date2 == null)
return date1;
if (date1.after(date2))
return date2;
return date1;
}
/**
* 得到year年month月的天数
* @param year
* @param month
* @return
*/
public static int daysOfMonth(int year, int month)
{
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (isLeap(year))
return 29;
return 28;
default:
return 0;
}
}
/**
* 在指定日期基础上加若干天
* @param date
* @param day
* @return
*/
public static Date addDay(Date date, int day)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(5, day);
Date d = calendar.getTime();
return d;
}
/**
* 在指定日期基础上加若干小时
* @param date
* @param l
* @return
*/
public static Date addHour(Date date, long l)
{
long oldD = date.getTime();
long deltaD = l * 60L * 60L * 1000L;
long newD = oldD + deltaD;
Date d = new Date(newD);
return d;
}
/**
* 在指定日期基础上加若干分钟
* @param date
* @param l
* @return
*/
public static Date addMinute(Date date, long l)
{
long oldD = date.getTime();
long deltaD = l * 60L * 1000L;
long newD = oldD + deltaD;
Date d = new Date(newD);
return d;
}
/**
* 在指定日期基础上加若干月
* @param date
* @param i
* @return
*/
public static Date addMonth(Date date, int i)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int month = calendar.get(Calendar.MONTH);
month += i;
int deltaY = month / 12;
month %= 12;
calendar.set(Calendar.MONTH, month);
if (deltaY != 0)
{
int year = calendar.get(Calendar.YEAR);
calendar.set(Calendar.YEAR, deltaY + year);
}
return calendar.getTime();
}
/**
* 在指定日期基础上加若干秒
* @param date
* @param l
* @return
*/
public static Date addSecond(Date date, long l)
{
long oldD = date.getTime();
long deltaD = l * 1000L;
long newD = oldD + deltaD;
Date d = new Date(newD);
return d;
}
/**
* 在指定日期基础上加若干年
* @param date
* @param i
* @return
*/
public static Date addYear(Date date, int i)
{
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
calendar.set(Calendar.YEAR, i + year);
return calendar.getTime();
}
/**
* 判断一年是否是闰年
* @param year
* @return
*/
public static boolean isLeap(int year)
{
boolean divBy4 = (year % 4 == 0);
boolean divBy100 = (year % 100 == 0);
boolean divBy400 = (year % 400 == 0);
return divBy4 && (!divBy100 || divBy400);
}
public static Date parse(String strDate) throws ParseException
{
return org.apache.commons.lang.time.DateUtils.parseDate(strDate,
new String[] {"yyyy-MM-dd","yyyy年MM月dd日","MM/dd/yyyy"});
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -