时间处理工具类

来源:互联网 发布:免费海关数据 米课 编辑:程序博客网 时间:2024/05/19 23:56
/**     * @filename DateUtils.java      * @version www.mindai.com   * @date 2016年5月31日      */package com.mjkf.framework.utils.date;import java.math.BigDecimal;import java.text.DateFormat;import java.text.ParseException;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.SimpleTimeZone;import javax.swing.JOptionPane;import org.slf4j.LoggerFactory;import org.slf4j.Logger;import com.mjkf.framework.utils.string.StringUtils;/** * 时间的工具类 *  * @author farrellz * @date 2016年5月31日 */public final class DateUtils extends org.apache.commons.lang.time.DateUtils {private static final Logger LOGGER = LoggerFactory.getLogger(DateUtils.class);/** * 私有化构造器 */private DateUtils() {}/** * Default date formate pattern. */public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";public static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");public static SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM");public static SimpleDateFormat dateFormatDB = new SimpleDateFormat("yyyyMMdd");// 数据库使用的日期格式public static SimpleDateFormat dataTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static final String Y_M_D = "yyyy-MM-dd";public static final String Y_M_D_HM = "yyyy-MM-dd HH:mm";public static final String Y_M_D_HMS = "yyyy-MM-dd HH:mm:ss";public static final String YMD = "yyyyMMdd";public static final String YMDHM = "yyyyMMddHHmm";public static final String YMDHMS = "yyyyMMddHHmmss";public static final String ymd = "yyyy/MM/dd";public static final String ymd_HM = "yyyy/MM/dd HH:mm";public static final String ymd_HMS = "yyyy/MM/dd HH:mm:ss";/** * 把字符串转成日期型 * * @param date * @param pattern * @return */public static Date parseDate(final String date, final String pattern) {if (StringUtils.isEmpty(date)) {return null;}String pat = pattern;if (StringUtils.isEmpty(pat)) {pat = DEFAULT_PATTERN;}try {return new SimpleDateFormat(pat).parse(date);} catch (ParseException e) {return null;}}/** * 将日期型转成字符串型 * * @param date * @param pattern * @return */public static String formatDate(Date date, String pattern) {if (StringUtils.isEmpty(pattern)) {pattern = DEFAULT_PATTERN;}return new SimpleDateFormat(pattern).format(date);}/** * 将日期型转成字符串型 *  * @param date * @return String * @author farrellz * @date 2016年8月3日 */public static String formatDate(Date date) {return new SimpleDateFormat(DEFAULT_PATTERN).format(date);}/** * 获取给定时间的那天的最后时刻 * * @param day *            给定时间(em.2011-01-25 22:11:00...) * @return 给定时间的那天的最后时刻(em.2011-01-25 23:59:59...) */public static Date getEndOfDay(Date day) {if (day == null)day = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(day);calendar.set(Calendar.HOUR_OF_DAY, calendar.getMaximum(Calendar.HOUR_OF_DAY));calendar.set(Calendar.MINUTE, calendar.getMaximum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getMaximum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getMaximum(Calendar.MILLISECOND));return calendar.getTime();}/** * 获取给定时间的那天的开始时刻 * * @param day *            给定时间(em.2011-01-25 22:11:00...) * @return 给定时间的那天的最后时刻(em.2011-01-25 00:00:00...) */public static Date getStartOfDay(Date day) {if (day == null)day = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(day);calendar.set(Calendar.HOUR_OF_DAY, calendar.getMinimum(Calendar.HOUR_OF_DAY));calendar.set(Calendar.MINUTE, calendar.getMinimum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getMinimum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getMinimum(Calendar.MILLISECOND));return calendar.getTime();}/** * 获取给定时间的那个月的最后时刻 * * @param day *            给定时间(em.2011-01-25 22:11:00...) * @return 给定时间的那个月的最后时刻(em.2011-01-31 23:59:59...) */public static Date getEndOfMonth(Date day) {if (day == null)day = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(day);calendar.set(Calendar.HOUR_OF_DAY, calendar.getMaximum(Calendar.HOUR_OF_DAY));calendar.set(Calendar.MINUTE, calendar.getMaximum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getMaximum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getMaximum(Calendar.MILLISECOND));calendar.set(Calendar.DAY_OF_MONTH, 1);calendar.add(Calendar.MONTH, 1);calendar.add(Calendar.DAY_OF_MONTH, -1);return calendar.getTime();}/** * 获取给定时间的那个月的开始时刻 * * @param day *            给定时间(em.2011-01-25 22:11:00...) * @return 给定时间的那个月的开始时刻(em.2011-01-01 00:00:00...) */public static Date getStartOfMonth(Date day) {if (day == null)day = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(day);calendar.set(Calendar.HOUR_OF_DAY, calendar.getMinimum(Calendar.HOUR_OF_DAY));calendar.set(Calendar.MINUTE, calendar.getMinimum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getMinimum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getMinimum(Calendar.MILLISECOND));calendar.set(Calendar.DAY_OF_MONTH, 1);return calendar.getTime();}/** * 获取给定时间的那天的正午时刻 * * @param day *            给定时间(em.2011-01-25 22:11:00...) * @return 给定时间的那天的最后时刻(em.2011-01-25 12:00:00...) */public static Date getNoonOfDay(Date day) {if (day == null)day = new Date();Calendar calendar = Calendar.getInstance();calendar.setTime(day);calendar.set(Calendar.HOUR_OF_DAY, 12);calendar.set(Calendar.MINUTE, calendar.getMinimum(Calendar.MINUTE));calendar.set(Calendar.SECOND, calendar.getMinimum(Calendar.SECOND));calendar.set(Calendar.MILLISECOND, calendar.getMinimum(Calendar.MILLISECOND));return calendar.getTime();}/** * 获取当前时间 * * @return */public static Date getNow() {return new Date();}/** * 获取给定日期的星期数 * * @param prefix *            前缀 ep.'星期' * @param date *            给定日期 eg.'2012-01-25 23:07:58' * @return 前缀+(星期数) ep.'星期三' */public static String getDayOfWeek(String prefix, Date date) {final String dayNames[] = { "日", "一", "二", "三", "四", "五", "六" };Calendar cal = Calendar.getInstance();cal.setTime(date);int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;if (dayOfWeek < 0)dayOfWeek = 0;return prefix + dayNames[dayOfWeek];}/** * 获取给定日期的星期数(默认前缀:'星期') * * @param date * @return */public static String getDayOfWeek(Date date) {return getDayOfWeek("星期", date);}/** * 获取当前日历所属的年. * * @return 当前日历所属的年. */public static int getCurrentYear() {Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());return calendar.get(Calendar.YEAR);}/** * 获取当前日历所属的月,月份是从1开始的. * * @return 当前日历所属的月. */public static int getCurrentMonth() {Calendar calendar = Calendar.getInstance();calendar.setTimeInMillis(System.currentTimeMillis());return calendar.get(Calendar.MONTH) + 1;}/** * 获取间隔给定天数的日期 <br> * * @param date *            给定的日期(eg:2015-06-02 12:00) * @param days *            间隔的天数,正数是给定时间往后,负数是给定时间往前(eg:-1 or 1) * @return 计算出来的日期(eg:2015-06-01 12:00 or 2015-06-03 12:00)<br> */public static Date intervalSomeDays(Date date, int days) {if (date == null)return date;Calendar cal = Calendar.getInstance();cal.setTime(date);cal.set(Calendar.DAY_OF_YEAR, cal.get(Calendar.DAY_OF_YEAR) + days);return cal.getTime();}/** * 获取间隔给定月数的日期 <br> * * @param date *            给定的日期(eg:2015-06-02 12:00) * @param months *            间隔的月数,正数是给定时间往后,负数是给定时间往前(eg:-1 or 1) * @return 计算出来的日期(eg:2015-05-02 12:00 or 2015-07-02 12:00)<br> */public static Date intervalSomeMonths(Date date, int months) {if (date == null)return date;Calendar cal = Calendar.getInstance();cal.setTime(date);cal.set(Calendar.MONTH, cal.get(Calendar.MONTH) + months);return cal.getTime();}/** * 获取间隔给定月数的日期 <br> * * @param date *            给定的日期(eg:2015-06-02 12:00) * @param years *            间隔的月数,正数是给定时间往后,负数是给定时间往前(eg:-1 or 1) * @return 计算出来的日期(eg:2014-06-02 12:00 or 2016-06-02 12:00)<br> */public static Date intervalSomeYears(Date date, int years) {if (date == null)return date;Calendar cal = Calendar.getInstance();cal.setTime(date);cal.set(Calendar.YEAR, cal.get(Calendar.YEAR) + years);return cal.getTime();}/** * 获取当前系统时间 *  * @return long * @author farrellz * @date 2016年7月12日 */public static long getCurrentTime() {return System.currentTimeMillis();}public Long ConvertToTime(String date) throws Exception {if (date == null) {return null;}SimpleDateFormat calenderFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");// 带时分秒if (date.length() > 10) {return (calenderFormat.parse(date)).getTime();}return (dateFormat.parse(date)).getTime();}/** * 两时间相减 返回 时间差 *  * @param endTime * @param startTime * @return String * @author farrellz * @date 2016年8月15日 */public static String getSubTwoTime(String endTime, String startTime) {try {Date d1 = dataTimeFormat.parse(startTime);Date d2 = dataTimeFormat.parse(endTime);long diff = d1.getTime() - d2.getTime();// 这样得到的差值是微秒级别long days = diff / (1000 * 60 * 60 * 24);long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60);if (hours < 0) {hours = new BigDecimal(hours).abs().intValue();}if (minutes < 0) {minutes = new BigDecimal(minutes).abs().intValue();}return "" + days + "-" + hours + "-" + minutes;} catch (Exception e) {e.printStackTrace();}return "";}/** * 两时间相减 返回 时间差 *  * @param endTime * @param startTime * @return String * @author farrellz * @date 2016年8月15日 */public static String getSubTwoTimeYY(String endTime, String startTime) {try {Date d1 = dateFormat.parse(startTime);Date d2 = dateFormat.parse(endTime);long diff = d1.getTime() - d2.getTime();// 这样得到的差值是微秒级别long days = diff / (1000 * 60 * 60 * 24);return "" + days;} catch (Exception e) {e.printStackTrace();}return "";}/** * 两时间相减 返回 *  * @param startTime * @param endTime * @return * @author farrellz * @date 2016年8月15日 */public static String getSubTwoTime1(String endTime, String startTime) {try {Date d1 = dataTimeFormat.parse(startTime);Date d2 = dataTimeFormat.parse(endTime);long diff = d2.getTime() - d1.getTime();// 这样得到的差值是微秒级别long days = diff / (1000 * 60 * 60 * 24);long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60)) / (1000 * 60);if (hours < 0) {hours = new BigDecimal(hours).abs().intValue();}if (minutes < 0) {minutes = new BigDecimal(minutes).abs().intValue();}return "" + days + "-" + hours + "-" + minutes;} catch (Exception e) {e.printStackTrace();}return "";}/** *  * @param dateTime *            yyyy-MM-dd HH:mm:ss * @return unix 时间 * @author farrellz * @date 2016年8月15日 */public static String getUnixTimeStamp(String dateTime) {Calendar c = Calendar.getInstance();try {c.setTime(dataTimeFormat.parse(dateTime));} catch (ParseException e) {e.printStackTrace();}return (c.getTimeInMillis() / 1000) + "";}/** * unix 时间 转换 *  * @param timestampString *            1252639886 * @param formats * @return * @author farrellz * @date 2016年8月15日 */public static String gerUnixTime2String(String timestampString, String formats) {if (StringUtils.isBlank(timestampString) || "null".equals(timestampString)) {return "";}Long timestamp = Long.parseLong(timestampString) * 1000;String date = new java.text.SimpleDateFormat(formats).format(new java.util.Date(timestamp));return date;}/** *  * @param dateTime *            yyyy-MM-dd HH:mm:ss * @return unix 时间 * @author farrellz * @date 2016年8月15日 */public static String getCurrentUnixTimeStamp() {Calendar c = Calendar.getInstance();c.setTime(new Date());return (c.getTimeInMillis() / 1000) + "";}/** * 格式化时间(yyyy-MM-dd HH:mm:ss) *  * @param date * @return String * @author farrellz * @date 2016年8月15日 */public static String formatDateTime(Date date) {return dataTimeFormat.format(date);}/** * 创建一个"yyyy-MM-dd"日期的格式化对象 *  * @return "yyyy-MM-dd"日期的格式化对象 * @author farrellz * @date 2016年8月15日 */private static SimpleDateFormat newLongYMDFormat() {return new SimpleDateFormat(DateUtils.Y_M_D);}/** * 创建一个"yyyy-MM-dd HH:mm:ss"日期的格式化对象 *  * @return "yyyy-MM-dd HH:mm:ss"日期的格式化对象 * @author farrellz * @date 2016年8月15日 */private static SimpleDateFormat newLongYMDHMSFormat() {return new SimpleDateFormat(DateUtils.Y_M_D_HMS);}/** * "yyyyMMddHHmmss"格式的日期转换为"yyyy-MM-dd HH:mm:ss"格式的日期 *  * @param shortYMDHMS *            "yyyyMMddHHmmss"格式的日期 * @return "yyyy-MM-dd HH:mm:ss"格式的日期 * @throws ParseException * @author farrellz * @date 2016年8月15日 */public static String toLongYMDHMS(String shortYMDHMS) throws ParseException {return newLongYMDHMSFormat().format(newShortYMDHMSFormat().parse(shortYMDHMS));}/** * 获得"yyyy-MM-dd"格式的当前日期 *  * @return 返回"yyyy-MM-dd"格式的当前日期 * @author farrellz * @date 2016年8月15日 */public static String getLongYMD() {return newLongYMDFormat().format(new Date());}/** * 2015年12月21日 *  * @return * @author farrellz * @date 2016年8月15日 */public static String getLongYMDChina() {String str = newLongYMDFormat().format(new Date());return str.split("-")[0] + "年" + str.split("-")[1] + "月" + str.split("-")[2] + "日";}/** * 创建一个"yyyyMMdd"日期的格式化对象 *  * @return "yyyyMMdd"日期的格式化对象 * @author farrellz * @date 2016年8月15日 */private static SimpleDateFormat newShortYMDFormat() {return new SimpleDateFormat("yyyyMMdd");}/** * 创建一个"yyyyMMddHHmmss"日期的格式化对象 *  * @return "yyyyMMddHHmmss"日期的格式化对象 * @author farrellz * @date 2016年8月15日 */private static SimpleDateFormat newShortYMDHMSFormat() {return new SimpleDateFormat("yyyyMMddHHmmss");}/** * 获得"yyyyMMddHHmmss"格式的当前日期 *  * @return 返回"yyyyMMddHHmmss"格式的当前时间 * @author farrellz * @date 2016年8月15日 */public static String getShortYMDHMS() {return newShortYMDHMSFormat().format(new Date());}/** * "yyyyMMdd"格式的日期转换为"yyyy-MM-dd"格式的日期 *  * @param shortYMD *            "yyyyMMdd"格式的日期 * @return "yyyy-MM-dd"格式的日期 * @throws ParseException * @author farrellz * @date 2016年8月15日 */public static String toLongYMD(String shortYMD) {try {return newLongYMDFormat().format(newShortYMDFormat().parse(shortYMD));} catch (ParseException e) {e.printStackTrace();return "";}}/** *  * 功能:生成日期yyyyMMdd *  * @return * @author farrellz * @date 2016年8月15日 */public static String getDbDate() {return dateFormatDB.format(new Date());}/** *  * 功能:把日期yyyy-MM-dd格式转换成yyyyMMDD日期格式 *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static String convertClientDateToDbDate(String dateStr) {String dbDateStr = null;try {dbDateStr = dateFormatDB.format(dateFormat.parse(dateStr));} catch (Exception e) {e.printStackTrace();}return dbDateStr;}/** *  * 功能:解析数据库中的日期字符串 格式:yyyy-MM-dd *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static Date parseDate(String dateStr) {Date date = null;try {date = dateFormat.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return date;}/** * 将UNIX时间转换成标准时间 *  * @param timestampString * @return * @author farrellz * @date 2016年8月15日 */public static String getDate(String timestampString) {Long timestamp = Long.parseLong(timestampString) * 1000;String date = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new java.util.Date(timestamp));return date;}/** *  * 功能:格式化日期字符串 例如:2008-8-8 转换为2008-08-08 *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static String getDateStrFormat(String dateStr) {try {Date date = dateFormat.parse(dateStr);return dateFormat.format(date);} catch (ParseException e) {e.printStackTrace();}return null;}/** *  * 功能:格式化日期字符串 例如:2008-8 转换为2008-08 *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static String getDateStrFormat2(String dateStr) {try {Date date = dateFormat2.parse(dateStr);return dateFormat2.format(date);} catch (ParseException e) {e.printStackTrace();}return null;}/** * 2008-8-8 转 20080808 *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static String getDateStrFormatyyyyMMdd(String dateStr) {try {Date date = dateFormat.parse(dateStr);return dateFormatDB.format(date);} catch (ParseException e) {e.printStackTrace();}return null;}/** *  * 功能:解析数据库中的时间字符串 格式:yyyy-MM-dd HH:mm:ss *  * @param dateStr * @return * @author farrellz * @date 2016年8月15日 */public static Date parseDateTime(String dateTimeStr) {Date date = null;try {date = dataTimeFormat.parse(dateTimeStr);} catch (ParseException e) {e.printStackTrace();}return date;}/** * 计算两个日期之间的天数 *  * @param startDate *            开始时间 * @param endDate *            结束时间 * @return * @author farrellz * @date 2016年8月15日 */public static int calcDays(String startDate, String endDate) {int days = 1;try {long start = dateFormat.parse(startDate).getTime();long end = dateFormat.parse(endDate).getTime();days = (int) ((end - start) / (24 * 60 * 60 * 1000));} catch (ParseException e) {e.printStackTrace();return -1;}return days;}/** * 计算两个日期之间的天数 *  * @param startDate *            开始时间 * @param endDate *            结束时间 * @return * @author farrellz * @date 2016年8月15日 */public static int calcDay(String startDate, String endDate) {int days = 1;try {long start = dateFormatDB.parse(startDate).getTime();long end = dateFormatDB.parse(endDate).getTime();days = (int) ((end - start) / (24 * 60 * 60 * 1000));} catch (ParseException e) {e.printStackTrace();return -1;}return days;}/** * 功能:指定日期加上指定天数 *  * @param date *            日期 * @param day *            天数 * @return 返回相加后的日期 * @author farrellz * @date 2016年8月15日 */public static Date addDate(Date date, int day) {Calendar c = Calendar.getInstance();c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);return c.getTime();}/** * 功能:指定日期加上指定天数 *  * @param date *            日期 * @param minute *            分钟 * @return 返回相加后的日期 * @author farrellz * @date 2016年8月15日 */public static Date addMinute(Date date, int minute) {Calendar c = Calendar.getInstance();c.setTimeInMillis(getMillis(date) + ((long) minute) * 60 * 1000);return c.getTime();}/** *  * 功能:添加指定秒杀的时间 *  * @param date * @param second * @return * @author farrellz * @date 2016年8月15日 */public static Date addSecond(Date date, int second) {long s = date.getTime();s = s + second * 1000;return new Date(s);}/** * 功能:指定日期减去指定天数 *  * @param date * @param day * @return * @author farrellz * @date 2016年8月15日 */public static Date diffDate(Date date, int day) {Calendar c = Calendar.getInstance();c.setTimeInMillis(getMillis(date) - ((long) day) * 24 * 3600 * 1000);return c.getTime();}/** *  * 功能:分钟相差 minute的时间值 *  * @param date * @param minute * @return * @author farrellz * @date 2016年8月15日 */public static Date getDateByMinuteAdd(Date date, int minute) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);calendar.add(Calendar.MINUTE, minute);return calendar.getTime();}/** * 功能:两个日期相隔天数 *  * @param startDate *            开始日期 * @param endDate *            结束日期 * @return 返回相减后的日期 * @author farrellz * @date 2016年8月15日 */public static int diffDate(Date startDate, Date endDate) {long endMillis = endDate.getTime();long startMillis = startDate.getTime();long s = (endMillis - startMillis) / (24 * 3600 * 1000);return (int) s;}/** * 功能:传入时间按所需格式返回时间字符串 *  * @param date *            java.util.Date格式 * @param format *            yyyy-MM-dd HH:mm:ss | yyyy年MM月dd日 HH时mm分ss秒 * @return * @author farrellz * @date 2016年8月15日 */public static String format(Date date, String format) {String result = "";try {if (date == null) {date = new Date();// 如果时间为空,则默认为当前时间}if (StringUtils.isBlank(format)) {// 默认格式化形式format = DateUtils.Y_M_D;}SimpleDateFormat df = new SimpleDateFormat(format);result = df.format(date);} catch (Exception e) {e.printStackTrace();}return result;}/** * 功能:传入时间字符串按所需格式返回时间 *  * @param dateStr *            时间字符串 * @param format *            跟传入dateStr时间的格式必须一样 yyyy-MM-dd HH:mm:ss | yyyy年MM月dd日 *            HH时mm分ss秒 * @return * @author farrellz * @date 2016年8月15日 */public static Date format(String dateStr, String format) {if (StringUtils.isBlank(dateStr)) {return new Date();}if (StringUtils.isBlank(format)) {format = DateUtils.Y_M_D;}Date date = null;try {DateFormat f = new SimpleDateFormat(format);date = f.parse(dateStr);} catch (ParseException e) {e.printStackTrace();}return date;}/** * 功能:时间字符串格式转换 *  * @param dateStr *            时间字符串 * @param format *            时间字符串的格式 * @param toFormat *            格式为的格式 * @return * @author farrellz * @date 2016年8月15日 */public static String format(String dateStr, String format, String toFormat) {return format(format(dateStr, format), toFormat);}/** * 功能:格式化rss的时间 输入: *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static String formatRssDate(Date date) {if (date == null) {date = new Date();// 如果时间为空,则默认为当前时间}SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US);SimpleTimeZone zone = new SimpleTimeZone(8, "GMT");sdf.setTimeZone(zone);return sdf.format(date);}/** * 功能:返回年 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getYear(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.YEAR);}/** * 功能:返回月 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getMonth(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.MONTH) + 1;}/** * 功能:返回日 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getDay(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.DAY_OF_MONTH);}/** * 功能:返回小时 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getHour(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.HOUR_OF_DAY);}/** * 功能:返回分 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getMinute(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.MINUTE);}/** * 功能:返回星期 1:星期一,2:星期二 ... 6:星期六 7:星期日 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getChinaWeek(Date date) {Calendar c = Calendar.getInstance();c.setTime(date);int week = c.get(Calendar.DAY_OF_WEEK) - 1;if (week == 0) {return 7;} else {return week;}}/** * 功能:返回秒 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getSecond2(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.get(Calendar.SECOND);}/** * 功能:返回毫秒 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static long getMillis(Date date) {if (date == null) {date = new Date();}Calendar c = Calendar.getInstance();c.setTime(date);return c.getTimeInMillis();}/** * 功能:获取当前月的第一天日期 *  * @return * @author farrellz * @date 2016年8月15日 */public static Date getMonFirstDay() {Date date = new Date();Calendar c = Calendar.getInstance();c.set(getYear(date), getMonth(date) - 1, 1);return c.getTime();}/** * 功能:获取当前月的最后一天日期 *  * @return * @author farrellz * @date 2016年8月15日 */public static Date getMonLastDay() {Date date = new Date();Calendar c = Calendar.getInstance();c.set(getYear(date), getMonth(date), 1);c.setTimeInMillis(c.getTimeInMillis() - (24 * 3600 * 1000));return c.getTime();}/** * 功能:获取上个月的最后一天日期 *  * @return * @author farrellz * @date 2016年8月15日 */public static Date getMonUpDay() {Date date = new Date();Calendar c = Calendar.getInstance();c.set(getYear(date), getMonth(date) - 1, 1);c.setTimeInMillis(c.getTimeInMillis() - (24 * 3600 * 1000));return c.getTime();}/** * 获得本月的第一天的日期 *  * @return String * @author farrellz * @date 2016年8月15日 */public static String getCurrMonthFirstDay() {Calendar cal = Calendar.getInstance();String s = (getYear(cal)) + "-" + (getMonth(cal)) + "-01";return s;}/** * 获得当前月份2016-08 *  * @return String * @author farrellz * @date 2016年8月15日 */public static String getCurrMonth() {Calendar cal = Calendar.getInstance();String s = (getYear(cal)) + "-" + (getMonth(cal));return getDateStrFormat2(s);}/** * 获得本月的最后一天的日期 *  * @return String * @author farrellz * @date 2016年8月15日 */public static String getCurrMonthLastDay() {Calendar cal = Calendar.getInstance();String s = (getYear(cal)) + "-" + (getMonth(cal)) + "-" + getDays(cal);return s;}/** * 获得给定日期当月的天数 *  * @param cal * @return int * @author farrellz * @date 2016年8月15日 */public static int getDays(Calendar cal) {return cal.getActualMaximum(Calendar.DAY_OF_MONTH);}/** * 获得给定日历的年 *  * @param cal * @return int * @author farrellz * @date 2016年8月15日 */public static int getYear(Calendar cal) {return cal.get(Calendar.YEAR);}/** * 获得给定日历的月 *  * @param cal * @return int * @author farrellz * @date 2016年8月15日 */public static int getMonth(Calendar cal) {return (cal.get(Calendar.MONTH) + 1);}/** * 获得给定日期字符串对应的年 *  * @param date_str * @param type * @return int * @author farrellz * @date 2016年8月15日 */public static int getYear(String date_str, String type) {return (convertStrToCal(date_str, type).get(Calendar.YEAR));}/** * 日期转日历 *  * @param date * @return Calendar * @author farrellz * @date 2016年8月15日 */public static Calendar convertDateToCal(Date date) {Calendar cal = Calendar.getInstance();cal.setTime(date);return cal;}/** * 字符转换日历(动态格式转换) *  * @param date_str * @param type * @return Calendar * @author farrellz * @date 2016年8月15日 */public static Calendar convertStrToCal(String date_str, String type) {Calendar cal = Calendar.getInstance();cal.setTime(convertStrToDate(date_str, type));return cal;}/** * 字符转换日期(动态格式转换) *  * @param date_str * @param type * @return Date * @author farrellz * @date 2016年8月15日 */public static Date convertStrToDate(String date_str, String type) {SimpleDateFormat dateformat = new SimpleDateFormat(type);try {return dateformat.parse(date_str);} catch (Exception e) {e.printStackTrace();}return null;}/** * 功能:获取当前日期 格式:2008-02-02 23:11:10 *  * @return * @author farrellz * @date 2016年8月15日 */public static String getCurrentDateTime() {Date date = new Date();return dataTimeFormat.format(date);}/** * 功能:获取当前日期 格式:20101010 *  * @return * @author farrellz * @date 2016年8月15日 */public static String getCurrentDate() {Date date = new Date();return dateFormat.format(date);}/** * 创建一个"yyyyMM"日期的格式化对象 *  * @return "yyyyMM"日期的格式化对象 * @author farrellz * @date 2016年8月15日 */private static SimpleDateFormat newShortYMFormat() {return new SimpleDateFormat("yyyyMM");}/** * 获得距离输入月份的diffMonth月的日期 *  * @param month *            "yyyyMM"格式的日期 * @param diffMonth *            相差的月数 * @return "yyyyMM"格式的日期 * @throws ParseException * @author farrellz * @date 2016年8月15日 */public static String getShortYMDiffMonth(String month, int diffMonth) {SimpleDateFormat sdf = newShortYMFormat();try {sdf.parse(month);} catch (ParseException e) {e.printStackTrace();}Calendar c = sdf.getCalendar();c.add(Calendar.MONTH, diffMonth);return sdf.format(c.getTime());}/** * 获得距离给定日期diffDay天的日期 *  * @param shortYMD *            "yyyyMMdd"格式的日期 * @param diffDay *            相差的天数 * @return "yyyyMMdd"格式的日期 * @throws ParseException * @author farrellz * @date 2016年8月15日 */public static String getShortYMDDiffDay(String shortYMD, int diffDay) {SimpleDateFormat sdf = newShortYMDFormat();try {sdf.parse(shortYMD);} catch (ParseException e) {e.printStackTrace();}Calendar c = sdf.getCalendar();c.add(Calendar.DATE, diffDay);return sdf.format(c.getTime());}/** * 当前时间加 减days *  * @param shortYMD * @param diffDay * @return * @author farrellz * @date 2016年8月15日 */public static String getAddDay(int diffDay) {SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");Calendar c = Calendar.getInstance();c.add(Calendar.DAY_OF_MONTH, diffDay);return sf.format(c.getTime());}/** * 获取某月份的最后一天 *  * @param shortYM *            月份 * @return 输入月份的最后一天 * @throws Exception * @author farrellz * @date 2016年8月15日 */public static String getEndDayOfMonth(String shortYM) {String month = "";try {month = DateUtils.getShortYMDiffMonth(shortYM, 1);} catch (Exception e) {// Auto-generated catch blocke.printStackTrace();}return DateUtils.getShortYMDDiffDay(month + "01", -1);}/** * 获得"yyyyMMdd"格式的当前日期 *  * @return 返回"yyyyMMdd"格式的当前日期 * @author farrellz * @date 2016年8月15日 */public static String getShortYMD() {return newShortYMDFormat().format(new Date());}/** * 获得两个日期之间的所有日期列表(包括起始日期和结束日期) *  * @param startShortYMD *            "yyyyMMdd"格式的起始日期 * @param endShortYMD *            "yyyyMMdd"格式的结束日期 * @return "yyyyMMdd"格式的日期列表 * @throws ParseException * @author farrellz * @date 2016年8月15日 */@SuppressWarnings({ "rawtypes", "unchecked" })public static List getShortYMDList(String startShortYMD, String endShortYMD) throws ParseException {SimpleDateFormat startDateFormat = newShortYMDFormat();startDateFormat.parse(startShortYMD);Calendar startCal = startDateFormat.getCalendar();SimpleDateFormat endDateFormat = newShortYMDFormat();endDateFormat.parse(endShortYMD);Calendar endCal = endDateFormat.getCalendar();List dateList = new ArrayList();while (startCal.before(endCal)) {dateList.add(startDateFormat.format(startCal.getTime()));startCal.add(Calendar.DATE, 1);}if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {dateList.add(startDateFormat.format(endCal.getTime()));}return dateList;}/** * 获得两个日期之间的所有日期列表(包括起始日期和结束日期) *  * @param startShortYM *            "yyyyMM"格式的起始日期 * @param endShortYM *            "yyyyMM"格式的结束日期 * @return "yyyyMM"格式的日期列表 * @throws ParseException * @author farrellz * @date 2016年8月15日 */@SuppressWarnings({ "rawtypes", "unchecked" })public static List getShortYMList(String startShortYM, String endShortYM) throws ParseException {SimpleDateFormat startDateFormat = newShortYMFormat();startDateFormat.parse(startShortYM);Calendar startCal = startDateFormat.getCalendar();SimpleDateFormat endDateFormat = newShortYMFormat();endDateFormat.parse(endShortYM);Calendar endCal = endDateFormat.getCalendar();List dateList = new ArrayList();while (startCal.before(endCal)) {dateList.add(startDateFormat.format(startCal.getTime()));startCal.add(Calendar.MONTH, 1);}if (startCal.getTimeInMillis() == endCal.getTimeInMillis()) {dateList.add(startDateFormat.format(endCal.getTime()));}return dateList;}/** * 验证输入的日期是否合法 *  * @param expDate * @return * @author farrellz * @date 2016年8月15日 */public static boolean checkExpDate(String expDate) {int year = Integer.parseInt(expDate.substring(0, 4));int month = Integer.parseInt(expDate.substring(4, 6));int day = Integer.parseInt(expDate.substring(6, 8));if (month > 12 || month < 1) {return false;}int[] monthLengths = new int[] { 0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };if (isLeapYear(year)) {monthLengths[2] = 29;} else {monthLengths[2] = 28;}int monthLength = monthLengths[month];if (day < 1 || day > monthLength) {return false;}return true;}/** * 是否是闰年 *  * @param year * @return boolean * @author farrellz * @date 2016年8月15日 */private static boolean isLeapYear(int year) {return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);}/** *  * 方法用途: 结束时间(end)与start时间进行比较<br> * 实现步骤: 如果相等返回0,如果end大于start返回1,如果end小于start返回-1<br> *  * @param start * @param end * @return * @throws Exception * @author farrellz * @date 2016年8月15日 */public static int compareEndAndStart(String start, String end) throws Exception {long s = 0;if (8 == start.length()) {s = dateFormatDB.parse(start).getTime();} else if (10 == start.length()) {s = dateFormat.parse(start).getTime();} else {s = dataTimeFormat.parse(start).getTime();}long e = 0;if (8 == end.length()) {e = dateFormatDB.parse(end).getTime();} else if (10 == end.length()) {e = dateFormat.parse(end).getTime();} else {e = dataTimeFormat.parse(end).getTime();}if (e > s) {return 1;} else if (e < s) {return -1;}return 0;}/** * 根据传过来的字符串型的date,转换成对应的日期 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static Date str2Date(String date) {Date ret = null;if (date.length() == 10) {try {ret = new SimpleDateFormat("yyyy-MM-dd").parse(date);} catch (ParseException e) {e.printStackTrace();}}if (date.length() == 16) {try {ret = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(date);} catch (ParseException e) {e.printStackTrace();}}if (date.length() == 19) {try {ret = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date);} catch (ParseException e) {e.printStackTrace();}}if (date.length() == 13) {try {ret = new SimpleDateFormat("yyyy-MM-dd HH").parse(date);} catch (ParseException e) {e.printStackTrace();}}if (date.length() == 7) {try {ret = new SimpleDateFormat("yyyy-MM").parse(date);} catch (ParseException e) {e.printStackTrace();}}return ret;}/** * 智能转换日期 *  * @param text * @return * @author farrellz * @date 2016年8月15日 */public static Date smartFormat(String text) {Date date = null;try {if (text == null || text.length() == 0) {date = null;} else if (text.length() == 10) {date = formatStringToDate(text, Y_M_D);} else if (text.length() == 13) {date = new Date(Long.parseLong(text));} else if (text.length() == 14) {date = formatStringToDate(text, YMDHMS);} else if (text.length() == 16) {date = formatStringToDate(text, Y_M_D_HM);} else if (text.length() == 19) {date = formatStringToDate(text, Y_M_D_HMS);} else {throw new IllegalArgumentException("日期长度不符合要求!");}} catch (Exception e) {throw new IllegalArgumentException("日期转换失败!");}return date;}/** * 把字符串格式化成日期 *  * @param date *            需要格式化的时间 * @param format *            格式化类型 * @return 返回格式化的时间 * @author farrellz * @date 2016年8月15日 */public static Date formatStringToDate(String date, String format) throws Exception {if (date == null || date.trim().length() < 1) {throw new Exception("参数[日期]不能为空!");}String strFormat = format;if (StringUtils.isEmpty(strFormat)) {strFormat = Y_M_D;if (date.length() > 16) {strFormat = Y_M_D_HMS;} else if (date.length() > 10) {strFormat = Y_M_D_HM;}}SimpleDateFormat sdfFormat = new SimpleDateFormat(strFormat);// 严格模式sdfFormat.setLenient(false);try {return sdfFormat.parse(date);} catch (ParseException e) {throw new Exception(e);}}public static String getSSTimeStamp() {Date d = new Date();SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");String strddd = sdf.format(d);return strddd;}/** * 获取当前日期是星期几<br> *  * @return 当前日期是星期几 * @author farrellz * @date 2016年8月15日 */public static String getWeekOfDate() {String[] weekDays = { "7", "1", "2", "3", "4", "5", "6" };Calendar cal = Calendar.getInstance();// cal.setTime(dt);int w = cal.get(Calendar.DAY_OF_WEEK) - 1;if (w < 0)w = 0;return weekDays[w];}/** * 功能:返回上旬/中旬/下旬 1 :上旬 2: 中旬 3: 下旬 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int getEarlyMidLate(Date date) {int day = getDay(date);int earlyMidLate = 0;if (1 <= day && day <= 10) {earlyMidLate = 1;}if (11 <= day && day <= 20) {earlyMidLate = 2;}if (20 < day) {earlyMidLate = 3;}return earlyMidLate;}/** * 将日期转换成Julian日期,即为哪一年的第几天 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static int dateToJulian(Date date) {Calendar calendar = Calendar.getInstance();calendar.setTime(date);int year = calendar.get(Calendar.YEAR) % 100;int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);return year * 1000 + dayOfYear;}/** * 将Julian日期转化为date,即为哪一年的第几天 *  * @param date * @return * @author farrellz * @date 2016年8月15日 */public static Date JulianToDate(int date) {int year = (date / 1000) + 2000;int dayOfYear = date % 1000;Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, year);calendar.set(Calendar.DAY_OF_YEAR, dayOfYear);return calendar.getTime();}/** * 返回当前月份的第一天 *  * @author gongz * @return * @author farrellz * @date 2016年8月15日 */public static Date currentMonthFirstDay() {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, 1); // 设置为1号,当前日期既为本月第一天return calendar.getTime();}/** * 返回当前月份的最后一天 *  * @author gongz * @return * @author farrellz * @date 2016年8月15日 */public static Date currentMonthLastDay() {Calendar calendar = Calendar.getInstance();calendar.add(Calendar.MONTH, 0);calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));return calendar.getTime();}/** * 计算两个时间相差的天数 *  * @param endDate *            结束时间 * @param startDate *            开始时间 * @return int 返回相差的天数 * @author farrellz * @date 2016年8月15日 */public static int statisSubDay(Date endDate, Date startDate) {Calendar fromCalendar = Calendar.getInstance();fromCalendar.setTime(startDate);fromCalendar.set(Calendar.HOUR_OF_DAY, 0);fromCalendar.set(Calendar.MINUTE, 0);fromCalendar.set(Calendar.SECOND, 0);fromCalendar.set(Calendar.MILLISECOND, 0);Calendar toCalendar = Calendar.getInstance();toCalendar.setTime(endDate);toCalendar.set(Calendar.HOUR_OF_DAY, 0);toCalendar.set(Calendar.MINUTE, 0);toCalendar.set(Calendar.SECOND, 0);toCalendar.set(Calendar.MILLISECOND, 0);Long tempString = (toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (1000 * 60 * 60 * 24);return Integer.valueOf(tempString.toString());}/** * 时间减去 几小时 返回时间 *  * @param startTime * @param endTime * @return * @author farrellz * @date 2016年8月15日 */public static String getSubTwoDate(String strDate, int a) {try {Calendar dar = Calendar.getInstance();dar.setTime(dataTimeFormat.parse(strDate));dar.add(java.util.Calendar.HOUR_OF_DAY, -a);return dataTimeFormat.format(dar.getTime());} catch (Exception e) {e.printStackTrace();}return "";}/** * 功能:判断两个时间是否相等 精确到分 *  * @param strDate * @param date * @return boolean * @author farrellz * @date 2016年8月15日 */public static boolean getCurrentDate(String strDate, Date date) {SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm");Calendar dar = Calendar.getInstance();try {dar.setTime(dft.parse(strDate));} catch (ParseException e) {e.printStackTrace();}return dft.format(dar.getTime()).equals(dft.format(date));}/** * 时间加day天 *  * @param d *            需要计算的时间 * @param day * @return * @throws ParseException *             Date * @author farrellz * @date 2016年8月15日 */public static Date addDate1(Date d, long day) throws ParseException {long time = d.getTime();day = day * 24 * 60 * 60 * 1000;time += day;return new Date(time);}/** * 获取上个月最后一天的日期 *  * @return Date * @author farrellz * @date 2016年8月15日 */public static Date getLastMonthDay() {Calendar calendar = Calendar.getInstance();int month = calendar.get(Calendar.MONTH);calendar.set(Calendar.MONTH, month - 1);calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));Date strDateTo = calendar.getTime();return strDateTo;}    /**     * 获取制定毫秒数之前的日期     * @param timeDiff     * @return     */    public static String getDesignatedDate(long timeDiff){        SimpleDateFormat format = new SimpleDateFormat(Y_M_D);        long nowTime = System.currentTimeMillis();        long designTime = nowTime - timeDiff;        return format.format(designTime);    }    /**     *     * 获取前几天的日期     */    public static String getPrefixDate(String count){        Calendar cal = Calendar.getInstance();        int day = 0-Integer.parseInt(count);        cal.add(Calendar.DATE,day);   // int amount   代表天数        Date datNew = cal.getTime();        SimpleDateFormat format = new SimpleDateFormat(Y_M_D);        return format.format(datNew);    }    /**     * 日期转换成字符串     * @param date     * @return     */    public static String dateToString(Date date){        SimpleDateFormat format = new SimpleDateFormat(Y_M_D);        return format.format(date);    }    public static String dateToString(Date date,String pattern){        SimpleDateFormat format = new SimpleDateFormat(pattern);        return format.format(date);    }    /**     * 字符串转换日期     * @param str     * @return     */    public static Date stringToDate(String str){        //str =  " 2008-07-10 19:20:00 " 格式        SimpleDateFormat format = new SimpleDateFormat(Y_M_D);        if(!str.equals("")&&str!=null){            try {                return format.parse(str);            } catch (ParseException e) {                e.printStackTrace();            }        }        return null;    }    //java中怎样计算两个时间如:“21:57”和“08:20”相差的分钟数、小时数 java计算两个时间差小时 分钟 秒 .    public void timeSubtract(){        SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date begin = null;        Date end = null;        try {            begin = dfs.parse("2004-01-02 11:30:24");            end = dfs.parse("2004-03-26 13:31:40");        } catch (ParseException e) {            e.printStackTrace();        }        long between = (end.getTime() - begin.getTime()) / 1000;// 除以1000是为了转换成秒        long day1 = between / (24 * 3600);        long hour1 = between % (24 * 3600) / 3600;        long minute1 = between % 3600 / 60;        long second1 = between % 60;        LOGGER.info("" + day1 + "天" + hour1 + "小时" + minute1 + "分"                + second1 + "秒");    }        /** * 获取n月后的时间 * @param time * @param n * @return Date * @author farrellz * @date 2016年9月13日 */public static Date getAfterNMonths(long time, int n) {Calendar calendar = Calendar.getInstance();Date date = new Date(time);calendar.setTime(date);calendar.add(Calendar.MONTH, n);return new Date(calendar.getTimeInMillis());}/** * 获取上周一的时间 * @return Date * @author farrellz * @date 2016年9月26日 */public static Date lastMonday(){Calendar cal = Calendar.getInstance();        int n = cal.get(Calendar.DAY_OF_WEEK) - 1;        if (n == 0) {            n = 7;        }        cal.add(Calendar.DATE, -(7 + (n - 1)));// 上周一的日期        Date monday = cal.getTime();        return dayBegin(monday);}/** * 获取指定时间的那天 00:00:00.000 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date dayBegin(final Date date) {Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那天 23:59:59.999 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date dayEnd(final Date date) {Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那周 00:00:00.000 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date weekBegin(final Date date) {Calendar c = Calendar.getInstance();c.setTime(date);c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那周 23:59:59.999 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date weekEnd(final Date date) {Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);        c.add(Calendar.WEEK_OF_YEAR, 1);        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那月 00:00:00.000 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date monthBegin(final Date date) {Calendar c = Calendar.getInstance();c.setTime(date);c.set(Calendar.DAY_OF_MONTH,1);c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那月 23:59:59.999 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date monthEnd(final Date date) {Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.DAY_OF_MONTH,0);        c.add(Calendar.MONTH, 1);        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那年 00:00:00.000 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date yearBegin(final Date date) {Calendar c = Calendar.getInstance();c.setTime(date);c.set(Calendar.DAY_OF_YEAR,1);c.set(Calendar.HOUR_OF_DAY, c.getMinimum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMinimum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMinimum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));        return c.getTime();}/** * 获取指定时间的那年 23:59:59.999 的时间 * @param date * @return Date * @author farrellz * @date 2016年9月26日 */public static Date yearEnd(final Date date) {Calendar c = Calendar.getInstance();        c.setTime(date);        c.set(Calendar.DAY_OF_YEAR,0);        c.add(Calendar.YEAR, 1);        c.set(Calendar.HOUR_OF_DAY, c.getMaximum(Calendar.HOUR_OF_DAY));        c.set(Calendar.MINUTE, c.getMaximum(Calendar.MINUTE));        c.set(Calendar.SECOND, c.getMaximum(Calendar.SECOND));        c.set(Calendar.MILLISECOND, c.getMaximum(Calendar.MILLISECOND));        return c.getTime();}/** * 判断传入的时间是否为今天 * @param date * @return boolean * @author farrellz * @date 2016年9月26日 */public static boolean isToday(Date date){return date.getTime() >= dayBegin(new Date()).getTime() && date.getTime() <= dayEnd(new Date()).getTime();}/** * 判断传入的时间是否为本周的某一天 * @param date * @return boolean * @author farrellz * @date 2016年9月26日 */public static boolean isNowWeek(Date date){return date.getTime() >= weekBegin(new Date()).getTime() && date.getTime() <= weekEnd(new Date()).getTime();}/** * 判断传入的时间是否为本月的某一天 * @param date * @return boolean * @author farrellz * @date 2016年9月26日 */public static boolean isNowMonth(Date date){return date.getTime() >= monthBegin(new Date()).getTime() && date.getTime() <= monthEnd(new Date()).getTime();}/** * 判断传入的时间是否为本年的某一天 * @param date * @return boolean * @author farrellz * @date 2016年9月26日 */public static boolean isNowYear(Date date){return date.getTime() >= yearBegin(new Date()).getTime() && date.getTime() <= yearEnd(new Date()).getTime();}public static void main(String[] args) {System.out.println(getSubTwoTimeYY("2016-04-14 12:00:01", "2016-04-21 12:00:11"));System.out.println(getSubTwoTime("2016-04-14 11:30:01", "2016-04-21 12:00:11"));System.out.println(getSubTwoTime1("2016-04-21 12:00:11", "2016-04-14 11:40:01"));System.out.println(dataTimeFormat.format(getLastMonthDay()));System.out.println(dataTimeFormat.format(currentMonthLastDay()));String date=JOptionPane.showInputDialog("请输入:");String dayBegin = dateToString(dayBegin(new Date()), "yyyy-MM-dd HH:mm:ss sss");LOGGER.info("今天起始时间{}",dayBegin);String dayEnd = dateToString(dayEnd(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("今天结束时间{}",dayEnd);boolean flag = isToday(stringToDate(date));LOGGER.info("{}是否为今天{}",date,flag);String weekBegin =dateToString(weekBegin(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本周起始时间{}",weekBegin);String weekEnd = dateToString(weekEnd(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本周结束时间{}",weekEnd);flag = isNowWeek(stringToDate(date));LOGGER.info("{}是否是本周的某一天{}",date,flag);String monthBegin = dateToString(monthBegin(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本月起始时间{}",monthBegin);String monthEnd = dateToString(monthEnd(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本月结束时间{}",monthEnd);flag = isNowMonth(stringToDate(date));LOGGER.info("{}是否为本月的某一天{}",date,flag);String yearBegin = dateToString(yearBegin(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本年起始时间{}",yearBegin);String yearEnd = dateToString(yearEnd(new Date()),"yyyy-MM-dd HH:mm:ss sss");LOGGER.info("本年结束时间{}",yearEnd);flag = isNowYear(stringToDate(date));LOGGER.info("{}是否为本年的某一天{}",date,flag);}}

2 0
原创粉丝点击