import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; /** * */ public class CommonDateUtil { /** * 当天的开始时间 * @return */ public static Date startOfTodDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date date=calendar.getTime(); return date; } /** * 当天的结束时间 * @return */ public static Date endOfTodDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); Date date=calendar.getTime(); return date; } /** * 昨天的开始时间 * @return */ public static long startOfyesterday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.MILLISECOND, 0); Date date=calendar.getTime(); return date.getTime(); } /** * 昨天的结束时间 * @return */ public static long endOfyesterday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); calendar.add(Calendar.DATE, -1); Date date=calendar.getTime(); return date.getTime(); } /** * 功能:获取上周的开始时间 */ public static long startOfLastWeek() {// 当周开始时间 return startOfThisWeek().getTime() - 7 * 24 * 60 * 60 * 1000; } /** * 功能:获取上周的结束时间 */ public static long endOfLastWeek() {// 当周开始时间 return endOfThisWeek() - 7 * 24 * 60 * 60 * 1000; } /** * 功能:获取本周的开始时间 示例:2013-05-13 00:00:00 */ public static Date startOfThisWeek() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return currentDate.getTime(); } /** * 功能:获取本周的结束时间 示例:2013-05-19 23:59:59 */ public static long endOfThisWeek() {// 当周结束时间 Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); currentDate.set(Calendar.HOUR_OF_DAY, 23); currentDate.set(Calendar.MINUTE, 59); currentDate.set(Calendar.SECOND, 59); currentDate.set(Calendar.MILLISECOND, 999); currentDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); Date date=currentDate.getTime(); return date.getTime(); } /** * 功能:获取本月的开始时间 */ public static Date startOfThisMonth() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_MONTH, 1); Date date=currentDate.getTime(); return date; } /** * 功能:获取本月的结束时间 */ public static Date endOfThisMonth() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DATE, -1); Date date=cal.getTime(); return date; } /** * 功能:获取上月的开始时间 */ public static Date startOfLastMonth() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_MONTH, 1); currentDate.add(Calendar.MONTH, -1); return currentDate.getTime(); } /** * 功能:获取上月的结束时间 */ public static long endOfLastMonth() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); cal.add(Calendar.DATE, -1); Date date=cal.getTime(); return date.getTime(); } /** * 功能:获取本年的开始时间 */ public static Date startOfTheYear() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.set(Calendar.YEAR, currentDate.get(Calendar.YEAR)); currentDate.set(Calendar.MONTH, 0); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_MONTH, 1); Date date=currentDate.getTime(); return date; } /** * 功能:获取本年的开始时间 */ public static Date endOfTheYear() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)); cal.set(Calendar.MONTH,11); cal.set(Calendar.DAY_OF_MONTH, 31); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); Date date=cal.getTime(); return date; } /** * 最近几天的开始 * @param someDays * @return */ public static Date startOfLastSomeDays(Integer someDays) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.add(Calendar.DATE, -someDays); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 某天的结束 * @param date * @return */ public static Date endOfOneDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 通过生日计算年龄 * @param birthday * @return */ public static Long getAge(Date birthday) { long birthdayTime = birthday.getTime(); long localTime = new Date().getTime(); long day = ((localTime - birthdayTime) / (24 * 60 * 60 * 1000)) + 1; return day / 360; } public static String formatDate(Date date , String format){ return new SimpleDateFormat(format).format(date); } /** * 获取某一时间段特定星期几的日期 * * @param dateFrom 开始时间 * @param dateEnd 结束时间 * @return 返回时间数组 */ public static String[] getDates(String dateFrom, String dateEnd) { String weekDays = "星期一|星期二|星期三|星期四|星期五|星期六|星期日"; long time = 1; long perDayMilSec = 24 * 60 * 60 * 1000; List<String> dateList = new ArrayList<String>(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //需要查询的星期系数 String strWeekNumber = weekForNum(weekDays); try { dateFrom = sdf.format(sdf.parse(dateFrom).getTime() - perDayMilSec); while (true) { time = sdf.parse(dateFrom).getTime(); time = time + perDayMilSec; Date date = new Date(time); dateFrom = sdf.format(date); if (dateFrom.compareTo(dateEnd) <= 0) { //查询的某一时间的星期系数 Integer weekDay = dayForWeek(date); //判断当期日期的星期系数是否是需要查询的 if (strWeekNumber.indexOf(weekDay.toString()) != -1) { dateList.add(dateFrom); } } else { break; } } } catch (ParseException e1) { e1.printStackTrace(); } String[] dateArray = new String[dateList.size()]; dateList.toArray(dateArray); return dateArray; } //等到当期时间的周系数。星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7 public static Integer dayForWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.DAY_OF_WEEK); } /** * 得到对应星期的系数 星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7 * * @param weekDays 星期格式 星期一|星期二 */ public static String weekForNum(String weekDays) { //返回结果为组合的星期系数 String weekNumber = ""; //解析传入的星期 if (weekDays.indexOf("|") != -1) {//多个星期数 String[] strWeeks = weekDays.split("\\|"); for (int i = 0; i < strWeeks.length; i++) { weekNumber = weekNumber + "" + getWeekNum(strWeeks[i]).toString(); } } else {//一个星期数 weekNumber = getWeekNum(weekDays).toString(); } return weekNumber; } //将星期转换为对应的系数 星期日:1,星期一:2,星期二:3,星期三:4,星期四:5,星期五:6,星期六:7 public static Integer getWeekNum(String strWeek) { Integer number = 1;//默认为星期日 if ("星期日".equals(strWeek)) { number = 1; } else if ("星期一".equals(strWeek)) { number = 2; } else if ("星期二".equals(strWeek)) { number = 3; } else if ("星期三".equals(strWeek)) { number = 4; } else if ("星期四".equals(strWeek)) { number = 5; } else if ("星期五".equals(strWeek)) { number = 6; } else if ("星期六".equals(strWeek)) { number = 7; } else { number = 1; } return number; } }
java日期工具类
最新推荐文章于 2024-10-03 08:33:02 发布