日期帮助类
来源:互联网 发布:陕西软件考试网 编辑:程序博客网 时间:2024/05/20 12:50
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.GregorianCalendar;import java.util.List;public class DateUtils { public final static String FORMAT_YYYY_MM_DD = "yyyy-MM-dd"; public final static String FORMAT_YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd hh:mm:ss"; public final static String FORMAT_YYYYMMDD = "yyyyMMdd"; public final static String FORMAT_YYYYMM = "yyyyMM"; public final static String FORMAT_YYYY = "yyyy"; public final static String FORMAT_YYYYMMDDHHMISS = "yyyyMMdd HH:mm:ss"; public final static String FORMAT_YYYYMMDDHHMMSS = "yyyyMMddHHmmss"; public final static String FORMAT_YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss"; public final static String FORMAT_YYYY_MM_DD_HH_MI_SS_SSS = "yyyy-MM-dd HH:mm:ss:SSS"; public final static String FORMAT_YYYY_MM = "yyyy-MM"; public final static String FORMAT_DD_HH_MM_SS = "dd HH:mm:ss"; public final static String FORMAT_HH_MM_SS = "HH:mm:ss"; public static final int USE_YEAR = 1; public static final int USE_MONTH = 2; public static final int USE_DAY = 3; /** * 根据相应的格式初始化日期格式对象 * @param pattern * @return */ public static DateFormat getDateFormat(final String pattern) { return new SimpleDateFormat(pattern); } /** * 获取距离当前日期第N天的日期,若为days>0则为当前日期后几天,否则为前几天 * @param days * @return */ public static Date getPreviousOrNextDaysOfNow(int days) { return getPreviousOrNextDaysOfDate(new Date(), days); } /** * 返回当前日期的 格式为: format(yyyy-MM-dd) * @return */ public static String getCurrentDate() { Date now = new Date(); return getDateFormat(FORMAT_YYYY_MM_DD).format(now); } /** * 返回指定日期和指定格式日期字符串 * @return */ public static String getSpecifyDate(Date date,String pattern) { return getDateFormat(pattern).format(date); } /** * 返回当前日期的 格式为: format(yyyy-MM-dd HH:MM:SS) * @return */ public static String getCurrentDateTime() { Date now = new Date(); return getDateFormat(FORMAT_YYYY_MM_DD_HH_MM_SS).format(now); } /** * Current date with format(yyyy-MM-dd HH:MM:SS:SSS) * @return */ public static String getCurrentDateTimeMilliSecond(Date date) { return getDateFormat(FORMAT_YYYY_MM_DD_HH_MI_SS_SSS).format(date); } /** * 根据相应时间格式(yyyy-MM-dd HH:MM:SS:SSS)字符串转换为Date * @return */ public static Date getDateByTimeMilliSecond(String date) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_YYYY_MM_DD_HH_MI_SS_SSS); return sdf.parse(date); } /** * 根据相应时间格式字符串转换为Date * @return */ public static Date getDateByPattern(String date,String pattern) throws ParseException{ SimpleDateFormat sdf = new SimpleDateFormat(pattern); return sdf.parse(date); } /** * 获取当月的第一天 * @return */ public static Date getFirstDayOfThisMonth() { Calendar nowday = Calendar.getInstance(); nowday.set(Calendar.DAY_OF_MONTH, 1); nowday.set(Calendar.HOUR_OF_DAY, 0); nowday.set(Calendar.MINUTE, 0); nowday.set(Calendar.SECOND, 0); nowday.set(Calendar.MILLISECOND, 0); return nowday.getTime(); } /** * 得到当前日期的上月日期 * @return */ public static Date getLastMonth() { Calendar nowday = Calendar.getInstance(); nowday.setTime(new Date()); nowday.set(Calendar.DAY_OF_MONTH, 1); nowday.add(Calendar.MONTH, -1); return nowday.getTime(); } public static Date getLastDayByCalendar(Calendar calendar) { calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); return calendar.getTime(); } /** * 判断指定日期是否在当前N天内 * @param old * @param days * @return */ public static boolean isDaysInterval(Date old, int days) { Calendar now = Calendar.getInstance(); return (now.getTimeInMillis() - old.getTime()) <= days * 24 * 3600 * 1000; } /** * 根据日历获取相应月份的第一天 * @param calendar * @return */ public static Date getFirstDayOfTheMonth(Calendar calendar) { calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 获取指定日期之前或者之后的日期 * @param days Day * @return */ public static Date getPreviousOrNextDaysOfDate(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_YEAR, days); return calendar.getTime(); } /** * 获取与指定日期相差月份数的相同日期 * @param date * @param month * @return */ public static Date getPreviousOrNextMonthsOfDate(Date date, int month) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, month); return calendar.getTime(); } /** * 获取与指定日期相差年份数的相同日期 * @param date * @param month * @return */ public static Date getPreviousOrNextYearsOfDate(Date date, int year) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, year); return calendar.getTime(); } /** * 得到当前日期的开始时间 * @return */ public static Date getBeginOfCurrentDay() { return getBeginOfTheDate(new Date()); } /** * 得到当前日期的结束时间 * @return */ public static Date getEndOfCurrentDay() { return getEndOfTheDate(new Date()); } public static long getDifferenceDays(Calendar beginCalender, Calendar endCalendar) { long days = (endCalendar.getTimeInMillis() - beginCalender.getTimeInMillis()) / (24 * 60 * 60 * 1000); days = days + 1; return days; } /** * 获取当前年份的第一天 * @return */ public static Date getBeginOfCurrentYear() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH, 0); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 获取当前时间 的前后N分钟 * @param date * @param minute * @return */ public static Date getPreviousOrNextMinutesOfDate(Date date, int minute) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.MINUTE, minute); return now.getTime(); } /** * 得到指定月份的最后时刻 * @param date * @return */ public static Date getLastDateOfTheMonth(Date date) { Calendar newday = Calendar.getInstance(); newday.setTime(date); newday.set(Calendar.DAY_OF_MONTH, newday.getActualMaximum(Calendar.DAY_OF_MONTH)); newday.set(Calendar.HOUR_OF_DAY, 23); newday.set(Calendar.MINUTE, 59); newday.set(Calendar.SECOND, 59); newday.set(Calendar.MILLISECOND, 999); return newday.getTime(); } public static Date getBeginOfTheDate(Date date) { Calendar nowday = Calendar.getInstance(); nowday.setTime(date); nowday.set(Calendar.HOUR_OF_DAY, 0); nowday.set(Calendar.MINUTE, 0); nowday.set(Calendar.SECOND, 0); nowday.set(Calendar.MILLISECOND, 0); return nowday.getTime(); } public static Date getEndOfTheDate(Date date) { Calendar nowday = Calendar.getInstance(); nowday.setTime(date); nowday.set(Calendar.HOUR_OF_DAY, 23); nowday.set(Calendar.MINUTE, 59); nowday.set(Calendar.SECOND, 59); nowday.set(Calendar.MILLISECOND, 998);//Sql Server BUG return nowday.getTime(); } /** * 获取指定时间段内所有的天数集合 * @param beginDate * @param endDate * @return * @throws Exception */ public static List<String> getAreaTime(String beginDate, String endDate) throws Exception { List<String> timeList = new ArrayList<String>(); if (endDate == null || "".equals(endDate)) { timeList.add(beginDate); return timeList; } // day if (beginDate.length() <= 7) { return getAreaMonthTime(beginDate, endDate); // month } else { return getAreaDayTime(beginDate, endDate); } } private static List<String> getAreaMonthTime(String beginMonth, String endMonth) throws Exception { Date parsedBeginMonth = getDateFormat(FORMAT_YYYY_MM).parse(beginMonth); String tempStr = ""; List<String> timeList = new ArrayList<String>(); int months = 0; while (!endMonth.equals(tempStr)) { tempStr = getDateFormat(FORMAT_YYYY_MM).format(getPreviousOrNextMonthsOfDate(parsedBeginMonth, months)); timeList.add(tempStr); months++; } return timeList; } /** * 获取指定时间段内所有的天数集合 * @param beginDate * @param endDate * @return * @throws Exception */ public static List<String> getAreaDayTime(String beginDate, String endDate) throws Exception { Date parsedBeginMonth = getDateFormat(FORMAT_YYYY_MM_DD).parse(beginDate); String tempStr = ""; List<String> timeList = new ArrayList<String>(); int months = 0; while (!endDate.equals(tempStr)) { tempStr = getDateFormat(FORMAT_YYYY_MM_DD).format(getPreviousOrNextDaysOfDate(parsedBeginMonth, months)); timeList.add(tempStr); months++; } return timeList; } /** * 获取当前日期前一天的相应日期的Long形式如20160227 * @return */ public static Long getPreviousDay() { Date date = getPreviousOrNextDaysOfDate(new Date(), -1); return Long.valueOf((getDateFormat(FORMAT_YYYYMMDD).format(date))); } /** * 获取指定日期前一天的相应日期的Long形式如20160227 * @return */ public static Long getPreviousDay(Date date,int days) { Date dates = getPreviousOrNextDaysOfDate(date, days); return Long.valueOf((getDateFormat(FORMAT_YYYYMMDD).format(dates))); } /** * 获取指定日期前N月或者后N月的相同日期字符串 * @param date * @param n * @return * @throws Exception */ public static String getPreviousOrNextMonthsOfTheMonth(String date, int n) throws Exception { Calendar calendar = new GregorianCalendar(); DateFormat dateFormat = getDateFormat(FORMAT_YYYYMM); calendar.setTime(dateFormat.parse(date)); calendar.add(Calendar.MONTH, n); return dateFormat.format(calendar.getTime()); } public static String getPreviousOrNextDaysOfTheDay(String date, int days) throws Exception { Calendar calendar = new GregorianCalendar(); DateFormat dateFormat = getDateFormat(FORMAT_YYYYMMDD); calendar.setTime(dateFormat.parse(date)); calendar.add(Calendar.DAY_OF_MONTH, days); return dateFormat.format(calendar.getTime()); } public static Long getFirstDayOfCurrentMonth() { Date date = getFirstDayOfThisMonth(); String dateStr = getDateFormat(FORMAT_YYYYMMDD).format(date); return Long.valueOf(dateStr); } public static Long getFirstMonthOfNow() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.MONTH, 0); return Long.valueOf(getDateFormat(FORMAT_YYYYMM).format(calendar.getTime())); } public static Integer getCurrentDay() { Date date = new Date(); return Integer.parseInt(getDateFormat(FORMAT_YYYYMMDD).format(date)); } public static Integer getCurrentMonth() { Date date = new Date(); return Integer.parseInt(getDateFormat(FORMAT_YYYYMM).format(date)); } public static Integer getCurrentYear() { Date date = new Date(); return Integer.parseInt(getDateFormat(FORMAT_YYYY).format(date)); } public static Integer getKpiDbAnyOffsetDayOfNow(int day) { Calendar nowday = Calendar.getInstance(); nowday.set(Calendar.DAY_OF_YEAR, nowday.get(Calendar.DAY_OF_YEAR) + day); return Integer.parseInt(getDateFormat(FORMAT_YYYYMMDD).format(nowday.getTime())); } /** * 得到当前日期下一年的上个月 * @return */ public static Long getPreviousMonthOfNextYear() { Calendar nowday = Calendar.getInstance(); nowday.setTime(new Date()); nowday.set(Calendar.DAY_OF_MONTH, 1); nowday.add(Calendar.YEAR, +1); nowday.add(Calendar.MONTH, -1); Long time = Long.valueOf(getDateFormat(FORMAT_YYYYMM).format(nowday.getTime())); return time; } /** * 获取指定日期下个月的相同日期 * @param date * @return */ public static Long getTheSameDayOfTheNextMonth(Date date) { Date next = getPreviousOrNextMonthsOfDate(date, 1); Long time = Long.valueOf(getDateFormat(FORMAT_YYYYMMDD).format(next)); return time; } /** * 获取当前日期下个月的相同日期 * @param date * @return */ public static Long getTheSameDayOfNextMonth() { return getTheSameDayOfTheNextMonth(new Date()); } public static Long getPreviousYear() { Calendar nowday = Calendar.getInstance(); nowday.setTime(new Date()); nowday.add(Calendar.YEAR, -1); return Long.valueOf(getDateFormat(FORMAT_YYYY).format(nowday.getTime())); } public static List<String> getTimeListByParameter(Date paramDate, int paramter, int type) { if (type == USE_YEAR) { Date newDate = getPreviousOfNextYearOfDate(paramDate, -paramter); return getDaysBetweenDate(paramDate, newDate); } else if (type == USE_MONTH) { Date newDate = getPreviousOrNextMonthsOfDate(paramDate, paramter); return getDaysBetweenDate(paramDate, newDate); } else { return getDaysByBeginDate(paramDate, paramter); } } private static Date getPreviousOfNextYearOfDate(Date date, int year) { Calendar now = Calendar.getInstance(); now.setTime(date); now.add(Calendar.YEAR,year); return now.getTime(); } private static List<String> getDaysBetweenDate(Date paramDate, Date newDate) { DateFormat dateFormat = getDateFormat(FORMAT_YYYYMMDD); String formatNewDate = dateFormat.format(newDate); String tempStr = ""; List<String> timeList = new ArrayList<String>(); int days = 0; while (!formatNewDate.equals(tempStr)) { tempStr = dateFormat.format(getPreviousOrNextDaysOfDate(paramDate, -days)); timeList.add(tempStr); days++; } return timeList; } private static List<String> getDaysByBeginDate(Date paramDate, int paramter) { List<String> timeList = new ArrayList<String>(); for (int i = 1; i <= paramter; i++) { timeList.add(getDateFormat(FORMAT_YYYYMMDD).format(getPreviousOrNextDaysOfDate(paramDate, -i))); } return timeList; } public static Long getFirstMonthOfCurrentYear() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MONTH,0); return Long.valueOf(getDateFormat(FORMAT_YYYYMM).format(calendar.getTime())); } public static Date getPreviousOrNextMonthsOfDateTime(Date date, int months){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, months); return calendar.getTime(); } /** * 获取指定日期的前后N天的日期字符串 * @param ymd * @param days * @return * @throws ParseException */ public static String getPreviousOrNextDaysOfNow(String ymd,int days) throws ParseException { Date date = getDateFormat(FORMAT_YYYY_MM_DD).parse(ymd); Date result = getPreviousOrNextDaysOfDate(date, days); return getDateFormat(FORMAT_YYYY_MM_DD).format(result); } public static Date getBeginOfThePreviousOrNextMonths(int month){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, month); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } public static Date getPreviousOrNextWorkDaysOfDate(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); int step = 0; if(days>0){ step = 1; }else{ step = -1; } for(int i = 0; i < Math.abs(days) ; ){ calendar.add(Calendar.DAY_OF_YEAR, step); if(calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY||calendar.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){ continue; } i++; } return calendar.getTime(); } public static Date getBeginDateOfTheMonth(Date date) { Calendar newday = Calendar.getInstance(); newday.setTime(date); newday.set(Calendar.DAY_OF_MONTH, 1); newday.set(Calendar.HOUR_OF_DAY, 0); newday.set(Calendar.MINUTE, 0); newday.set(Calendar.SECOND, 0); newday.set(Calendar.MILLISECOND, 0); return newday.getTime(); }}
阅读全文
1 0
- 日期时间帮助类
- 日期转换帮助类
- 日期帮助类
- java 日期格式化帮助类
- C# 农历日期帮助类
- android 日期帮助
- 用于查询的日期类型转换帮助类
- 写一个自己的时间日期帮助类
- Java常见帮助类(9)日期帮助类(一)
- Java常见帮助类(10)日期帮助类(二)
- 【强烈推荐】开源C#工具类MSCL系列(七)Date时间日期帮助类
- 使用日期和时间表单帮助方法
- BU_DATE_CHAR abap screen 日期字段搜索帮助
- BU_DATE_CHAR abap screen 日期字段搜索帮助
- sql server 2000 日期函数(联机帮助)
- ABAP ALV里日期类型的F4帮助
- ABAP ALV里日期类型的F4帮助
- 字符串帮助类
- JNI调用c基本用法
- CodeForces 731C C
- node+express+http-proxy-middleware代理转发
- 实习项目二总结
- Python中list,tuple,dict,set的区别和用法
- 日期帮助类
- JavaScript(5)__Js基础<函数>
- OncePerRequestFilter dispatcherType
- win7文件共享设置
- 树莓派3B 串口配置教程
- 求二叉树的先序遍历
- Windows环境下Python中wordcloud的使用——自己踩过的坑 2017.08.08
- 剑指offer--第一个只出现一次的字符
- windows列出所有进程示例