工具类一:
package com.common.time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
*
* 功能描述:
*
* @author Administrator
* @Date Jul 19, 2008
* @Time 9:47:53 AM
* @version 1.0
*/
public class DateUtil {
public static Date date = null;
public static DateFormat dateFormat = null;
public static Calendar calendar = null;
/**
* 功能描述:格式化日期
*
* @param dateStr
* String 字符型日期
* @param format
* String 格式
* @return Date 日期
*/
public static Date parseDate(String dateStr, String format) {
try {
dateFormat = new SimpleDateFormat(format);
String dt = dateStr.replaceAll("-", "/");
if ((!dt.equals("")) && (dt.length() < format.length())) {
dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]",
"0");
}
date = (Date) dateFormat.parse(dt);
} catch (Exception e) {}
return date;
}
/**
* 功能描述:格式化日期
*
* @param dateStr
* String 字符型日期:YYYY-MM-DD 格式
* @return Date
*/
public static Date parseDate(String dateStr) {
return parseDate(dateStr, "yyyy/MM/dd");
}
/**
* 功能描述:格式化输出日期
*
* @param date
* Date 日期
* @param format
* String 格式
* @return 返回字符型日期
*/
public static String format(Date date, String format) {
String result = "";
try {
if (date != null) {
dateFormat = new SimpleDateFormat(format);
result = dateFormat.format(date);
}
} catch (Exception e) {}
return result;
}
/**
* 功能描述:
*
* @param date
* Date 日期
* @return
*/
public static String format(Date date) {
return format(date, "yyyy/MM/dd");
}
/**
* 功能描述:返回年份
*
* @param date
* Date 日期
* @return 返回年份
*/
public static int getYear(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.YEAR);
}
/**
* 功能描述:返回月份
*
* @param date
* Date 日期
* @return 返回月份
*/
public static int getMonth(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 功能描述:返回日份
*
* @param date
* Date 日期
* @return 返回日份
*/
public static int getDay(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 功能描述:返回小时
*
* @param date
* 日期
* @return 返回小时
*/
public static int getHour(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.HOUR_OF_DAY);
}
/**
* 功能描述:返回分钟
*
* @param date
* 日期
* @return 返回分钟
*/
public static int getMinute(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.MINUTE);
}
/**
* 返回秒钟
*
* @param date
* Date 日期
* @return 返回秒钟
*/
public static int getSecond(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.get(Calendar.SECOND);
}
/**
* 功能描述:返回毫秒
*
* @param date
* 日期
* @return 返回毫秒
*/
public static long getMillis(Date date) {
calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar.getTimeInMillis();
}
/**
* 功能描述:返回字符型日期
*
* @param date
* 日期
* @return 返回字符型日期 yyyy/MM/dd 格式
*/
public static String getDate(Date date) {
return format(date, "yyyy/MM/dd");
}
/**
* 功能描述:返回字符型时间
*
* @param date
* Date 日期
* @return 返回字符型时间 HH:mm:ss 格式
*/
public static String getTime(Date date) {
return format(date, "HH:mm:ss");
}
/**
* 功能描述:返回字符型日期时间
*
* @param date
* Date 日期
* @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
*/
public static String getDateTime(Date date) {
return format(date, "yyyy/MM/dd HH:mm:ss");
}
/**
* 功能描述:日期相加
*
* @param date
* Date 日期
* @param day
* int 天数
* @return 返回相加后的日期
*/
public static Date addDate(Date date, int day) {
calendar = Calendar.getInstance();
long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
calendar.setTimeInMillis(millis);
return calendar.getTime();
}
/**
* 功能描述:日期相减
*
* @param date
* Date 日期
* @param date1
* Date 日期
* @return 返回相减后的日期
*/
public static int diffDate(Date date, Date date1) {
return (int)((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
}
/**
* 功能描述:取得指定月份的第一天
*
* @param strdate
* String 字符型日期
* @return String yyyy-MM-dd 格式
*/
public static String getMonthBegin(String strdate) {
date = parseDate(strdate);
return format(date, "yyyy-MM") + "-01";
}
/**
* 功能描述:取得指定月份的最后一天
*
* @param strdate
* String 字符型日期
* @return String 日期字符串 yyyy-MM-dd格式
*/
public static String getMonthEnd(String strdate) {
date = parseDate(getMonthBegin(strdate));
calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.DAY_OF_YEAR, -1);
return formatDate(calendar.getTime());
}
/**
* 功能描述:常用的格式化日期
*
* @param date
* Date 日期
* @return String 日期字符串 yyyy-MM-dd格式
*/
public static String formatDate(Date date) {
return formatDateByFormat(date, "yyyy-MM-dd");
}
/**
* 功能描述:以指定的格式来格式化日期
*
* @param date
* Date 日期
* @param format
* String 格式
* @return String 日期字符串
*/
public static String formatDateByFormat(Date date, String format) {
String result = "";
if (date != null) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
result = sdf.format(date);
} catch (Exception ex) {
ex.printStackTrace();
}
}
return result;
}
public static void main(String[] args) {
Date d = new Date();
// System.out.println(d.toString());
// System.out.println(formatDate(d).toString());
// System.out.println(getMonthBegin(formatDate(d).toString()));
// System.out.println(getMonthBegin("2008/07/19"));
// System.out.println(getMonthEnd("2008/07/19"));
System.out.println(addDate(d, 15).toString());
}
}
工具类二:
package www.mingketang.com;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;
public class DateUtils {
//http响应头Expire属性时间格式
public static final String HTTP_RESPONSE_DATE_HEADER = "EEE, dd MMM yyyy HH:mm:ss zzz";
//http响应头Expire属性时间格式工具
public static final SimpleDateFormat responseHeaderFormat = new SimpleDateFormat(HTTP_RESPONSE_DATE_HEADER, Locale.US);
static {
responseHeaderFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
}
/**
* 某个时间点的下个月的第一天
* @param day
* @return
*/
public static Date firstDayInNextMonth(Date day) {
Calendar c = Calendar.getInstance();
c.setTime(day);
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
/**
* 获取某天在星期中的排序值:
* 星期日 -> 星期六 对应为:1 -> 7
* @param date
* @return
*/
public static int getDateInWeek(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_WEEK);
}
/**
* 获取指定日期后n天的凌晨
* @param date
* @param n
* @return
*/
public static Date getDateNextDay(Date date, int n) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, n);
return c.getTime();
}
/**
* 获取下n个月后的日期
* @param n 月份偏移量
* @return
*/
public static Date getDateNextMonth(int n) {
Calendar now = Calendar.getInstance();
now.set(Calendar.MONTH, now.get(Calendar.MONTH) + n); // 设置时间向前进n个月
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
return now.getTime();
}
/**
* 获取今天在本月中的号码
* @return
*/
public static int getDateOfMoth() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}
/**
* 本月的所有日期集合
* @return
*/
public static List < Date > getDatesInMonth() {
List < Date > dates = new ArrayList < Date > ();
Calendar c = Calendar.getInstance();
// 设置代表的日期为1号
c.set(Calendar.DATE, 1);
// 获得当前月的最大日期数
int maxDay = c.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= maxDay; i++) {
c.set(Calendar.DATE, i);
dates.add(c.getTime());
}
return dates;
}
/**
* 获取某个时间所在的月份
* @param date
* @return
*/
public static int getMonth(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MONTH) + 1;
}
/**
* 获取本月最后一天
* @return
*/
public static Date getMonthEnd() {
int length = getDateOfMoth();
Calendar c = Calendar.getInstance();
c.set(Calendar.DATE, length);
c.set(Calendar.HOUR, 24);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
/**
* 获取某个时间所在月份的最后一秒
* @param date
* @return
*/
public static Date getMonthEnd(Date date) {
if (date == null) {
return null;
}
Calendar start = Calendar.getInstance();
start.setTime(date);
start.set(Calendar.MONTH, start.get(Calendar.MONTH) + 1);
start.set(Calendar.DAY_OF_MONTH, 1);
start.set(Calendar.HOUR, 0);
start.set(Calendar.MINUTE, 0);
start.set(Calendar.SECOND, 0);
return start.getTime();
}
/**
* 获取某个时间所在月份的第一天凌晨
* @param date
* @return
*/
public static Date getMonthStart(Date date) {
if (date == null) {
return null;
}
Calendar start = Calendar.getInstance();
start.setTime(date);
start.set(Calendar.DAY_OF_MONTH, 1);
start.set(Calendar.HOUR, 0);
start.set(Calendar.MINUTE, 0);
start.set(Calendar.SECOND, 0);
return start.getTime();
}
/**
* 获取今天凌晨
* @return
*/
public static Date getMorning() {
return getMorning(new Date());
}
/**
* 获取指定时间当天的凌晨
* @param date 给定时间当天的凌晨
* @return
*/
public static Date getMorning(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
/**
* 获取当前时间N天后的凌晨
*/
public static Date getMorningNextDate(int n) {
Calendar now = Calendar.getInstance();
now.set(Calendar.DATE, now.get(Calendar.DATE) + n); //设置时间向前进n天
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
return now.getTime();
}
/**
* 系统当前时间过N个月后的时间
* @param nextStep 月份偏移量
* @return
*/
public static Date getNextMonth(int nextStep) {
Calendar c = Calendar.getInstance();
int m = c.get(Calendar.MONTH);
c.set(Calendar.MONTH, m + nextStep);
return c.getTime();
}
/**
* 计算给定时间推进一个月对应的时间
* @param date 给定时间
* @return 某时间过一个月后所在的时间
*/
public static Date getNextMonthToday(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 1);
return c.getTime();
}
/**
* 获取系统当前时间所在的年份
* @return
*/
public static int getYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}
/**
* 获取给定时间所在的年份
* @param date 时间
* @return 时间所在的年份
*/
public static int getYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR);
}
/**
* 获取某年分的最后一天结束的时间
* @param year 年份
* @return 指定年份的最后一天结束
*/
public static Date getYearEnd(int year) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.DECEMBER);
c.set(Calendar.DAY_OF_MONTH, 31);
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
return c.getTime();
}
/**
* 获取某年份的第一天凌晨
* @param year 年份
* @return 指定年份的第一天凌晨
*/
public static Date getYearStart(int year) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DAY_OF_MONTH, 1);
c.set(Calendar.HOUR_OF_DAY, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
return c.getTime();
}
}
工具类三:
import static java.util.Calendar.HOUR_OF_DAY;
import static java.util.Calendar.MILLISECOND;
import static java.util.Calendar.MINUTE;
import static java.util.Calendar.SECOND;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class DateUtil extends org.apache.commons.lang.time.DateUtils {
/**
* 默认的日期格式化样式
*/
public static final String DAY_PATTERN = “yyyy - MM - dd”;
/**
* 默认的时间格式化样式
*/
public static final String TIME_PATTERN = “HH: mm: ss”;
/**
* 将Date格式化成符合默认格式的字符串
*
* @param date
* @return 返回样例:2012-03-29 14:32:23
*/
public static String format(Date date) {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(DAY_PATTERN + ”” +TIME_PATTERN);
return formatTool.format(date);
}
/**
* 将Date格式化成符合默认日期格式的字符串
*
* @param date
* @return 返回样例:2012-03-29
*/
public static String formatDate(Date date) {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(DAY_PATTERN);
return formatTool.format(date);
}
/**
* 将Date格式化成符合默认时间格式的字符串
*
* @param date
* @return 返回样例:14:32:23
*/
public static String formatTime(Date date) {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(TIME_PATTERN);
return formatTool.format(date);
}
/**
* 按照pattern格式格式化Date
*
* @param date
* @param pattern
* 样例: yyyy/MM/dd
* @return 返回样例:2012/03/29
*/
public static String format(Date date, String pattern) {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(pattern);
return formatTool.format(date);
}
/**
* 将符合默认格式的字符串转换成Date
*
* @param dateValue
* 样例:2012-03-29 14:32:23
* @return
* @throws ParseException
*/
public static Date parse(String dateValue) throws ParseException {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(DAY_PATTERN + ”” +TIME_PATTERN);
return formatTool.parse(dateValue);
}
/**
* 将符合默认格式的日期字符串转换成Date
*
* @param dateValue
* 样例:2012-03-29
* @return
* @throws ParseException
*/
public static Date parseDate(String dateValue) throws ParseException {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(DAY_PATTERN);
return formatTool.parse(dateValue);
}
/**
* 将符合pattern格式的dateValue转换成Date
*
* @param dateValue
* 样例:2012/03/29
* @param pattern
* 样例:yyyy/MM/dd
* @return
* @throws ParseException
*/
public static Date parse(String dateValue, String pattern)
throws ParseException {
SimpleDateFormat formatTool = new SimpleDateFormat();
formatTool.applyPattern(pattern);
return formatTool.parse(dateValue);
}
/**
* 返回这一天的最早的时候
*
* @param date
* @return
*/
public static Date getEarliest(Date date) {
return parseTime(date, 0, 0, 0, 0);
}
/**
* 返回这一天的最晚时候
*
* @param date
* @return
*/
public static Date getLastest(Date date) {
return parseTime(date, 23, 59, 59, 999);
}
/**
* 得到指定月的天数
*
* @param year
* @param month
* @return
*/
public static int getMonthLastDay(int year, int month) {
Calendar a = Calendar.getInstance();
a.set(Calendar.YEAR, year);
a.set(Calendar.MONTH, month– 1);
a.set(Calendar.DATE, 1); // 把日期设置为当月第一天 a.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天 int maxDate = a.get(Calendar.DATE);
return maxDate;
}
/**
* 返回指定时间加上num天后的时间
*
* @param date
* @param num
* @return
*/
public static Date add(Date date, int num) {
Calendar a = Calendar.getInstance();
a.setTime(date);
a.add(Calendar.DAY_OF_MONTH, num);
return a.getTime();
}
/**
* 返回false:date=null,date是1970年;其它都返回true
*
* @param date
* @return
*/
public static boolean isNotEmpty(Date date) {
if (date != null) {
Calendar a = Calendar.getInstance();
a.setTime(date);
return a.get(Calendar.YEAR) != 1970;
}
return Boolean.FALSE;
}
/**
* 获得date的小时数0-23
*
* @param date
* @return
*/
public static int getHours(Date date) {
Calendar a = Calendar.getInstance();
a.setTime(date);
return a.get(Calendar.HOUR_OF_DAY);
}
/**
* 获得date是一周的第几天,注意:周日 返回 1,周六 返回 7
*
* @param date
* @return
*/
public static int getDay(Date date) {
Calendar a = Calendar.getInstance();
a.setTime(date);
return a.get(Calendar.DAY_OF_WEEK);
}
/**
* 设定date的时间细节
*
* @param date
* 要设定时间细节的date
* @param hourOfDay
* 0-23
* @param minute
* 0-59
* @param second
* 0-59
* @param milliSecond
* 0-999
* @return
*/
public static Date parseTime(Date date, int hourOfDay, int minute,
int second, int milliSecond) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
setCalendarTime(cal, hourOfDay, minute, second, milliSecond);
return cal.getTime();
}
/**
* 设定date的时间细节
*
* @param date
* 要设定时间细节的date
* @param timeDetail
* 以:号分隔的24小时制的时间,例:16:23:42:267 或 16(等同于16:00:00:000)
* @return
*/
public static Date parseTime(Date date, String timeDetail) {
List < String > strList = new ArrayList < String > ();
strList.addAll(Arrays.asList(timeDetail.split(“: ”)));
while (strList.size() < 4) {
strList.add(“0″);
}
return parseTime(date, Integer.parseInt(strList.get(0)),
Integer.parseInt(strList.get(1)),
Integer.parseInt(strList.get(2)),
Integer.parseInt(strList.get(3)));
}
/**
* 指定时间 是否在 当前时间 之后,注:和日期无关
*
* @param time
* 指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
* @return
*/
public static boolean isAfterTime(String time) {
Date date = parseTime(new Date(), time);
return date.after(new Date());
}
/**
* 指定时间 是否在 当前时间 之前,注:和日期无关
*
* @param time
* 指定的时间, 传入样例:16:23:42:267 或 16(等同于16:00:00:000)
* @return
*/
public static boolean isBeforeTime(String time) {
Date date = parseTime(new Date(), time);
return date.before(new Date());
}
private static void setCalendarTime(Calendar cal, int hourOfDay,
int minute, int second, int milliSecond) {
cal.set(HOUR_OF_DAY, hourOfDay);
cal.set(MINUTE, minute);
cal.set(SECOND, second);
cal.set(MILLISECOND, milliSecond);
}
}
ok!