java日期计算工具类【包含常用的日期计算方法】

来源:互联网 发布:mac安装windows软件 编辑:程序博客网 时间:2024/05/17 22:43

java日期计算工具类【包含常用的日期计算方法】

package com.test;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import com.util.CommonDateParseUtil;/** * @作者 王建明 * @创建日期 2012-12-27 * @创建时间 下午03:47:52 * @版本号 V 1.0 */public class DateTest {public static void main(String[] args) {// testGetDateStr();//System.out.println(CommonDateParseUtil.date2string(//firstDayOfWeek(new Date()), CommonDateParseUtil.YYYY_MM_DD));//System.out.println(CommonDateParseUtil.date2string(//lastDayOfWeek(new Date()), CommonDateParseUtil.YYYY_MM_DD));System.out.println(lastDayOfMonth());}/** *  * @作者 王建明 * @创建日期 2013-01-24 * @创建时间 08:36:08 * @描述 —— */private static void testGetDateStr() {SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");DateTest test = new DateTest();// DateDate currentDate = new Date();System.out.println("当前日期是:" + df.format(currentDate));System.out.println("一周后的日期是:" + df.format(test.nextWeek(currentDate)));System.out.println("一月后的日期是:" + df.format(test.nextMonth(currentDate)));System.out.println("一年后的日期是:" + df.format(test.nextYear(currentDate)));// TimestampTimestamp currentTime = new Timestamp(System.currentTimeMillis());System.out.println("当前日期是:" + df.format(currentTime));System.out.println("一周后的日期是:" + df.format(test.nextWeek(currentTime)));System.out.println("一月后的日期是:" + df.format(test.nextMonth(currentTime)));System.out.println("一年后的日期是:" + df.format(test.nextYear(currentTime)));// 另一种计算方式,这种方式计算月和年的日期比较困难Timestamp nextTime = new Timestamp(currentTime.getTime() + 7 * 24 * 60* 60 * 1000);System.out.println("当前日期是:" + df.format(currentTime));System.out.println("一周后的日期是:" + df.format(nextTime));}// 获取下一周的日期public static Date nextWeek(Date currentDate) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(currentDate);cal.add(GregorianCalendar.DATE, 7);// 在日期上加7天return cal.getTime();}// 获取本周日的日期public static Date getSunday(Date monday) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(monday);cal.add(GregorianCalendar.DATE, 6);// 在日期上加6天return cal.getTime();}// 获取下一月的日期public Date nextMonth(Date currentDate) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(currentDate);cal.add(GregorianCalendar.MONTH, 1);// 在月份上加1return cal.getTime();}// 获取下一年的日期public Date nextYear(Date currentDate) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(currentDate);cal.add(GregorianCalendar.YEAR, 1);// 在年上加1return cal.getTime();}/** * @param date * @return * @作者 王建明 * @创建日期 2013-06-06 * @创建时间 10:47:36 * @描述 —— 获取日期为该月的第几周 */public static int getWeekInMonthNum(Date date) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(date);int week = cal.get(Calendar.WEEK_OF_MONTH);// 获取是本月的第几周return week;}/** * @作者 王建明 * @创建日期 2013-01-24 * @创建时间 08:43:41 * @描述 —— 获取当前日期的本周第一天 */public static Date firstDayOfWeek(Date date) {int year = Integer.parseInt(CommonDateParseUtil.getNowYear());int month = Integer.parseInt(CommonDateParseUtil.getNowMonth());int day = Integer.parseInt(CommonDateParseUtil.getNowDay());// 取本周第一天 最后一天Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, year);calendar.set(Calendar.MONTH, month - 1);calendar.set(Calendar.DAY_OF_MONTH, day);calendar.getTime();calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return calendar.getTime();}/** * @param date * @return * @作者 王建明 * @创建日期 2013-01-24 * @创建时间 08:48:03 * @描述 —— 获取本周最后一天 */public static Date lastDayOfWeek(Date date) {int year = Integer.parseInt(CommonDateParseUtil.getNowYear());int month = Integer.parseInt(CommonDateParseUtil.getNowMonth());int day = Integer.parseInt(CommonDateParseUtil.getNowDay());// 取本周最后一天Calendar calendar = Calendar.getInstance();calendar.set(Calendar.YEAR, year);calendar.set(Calendar.MONTH, month - 1);calendar.set(Calendar.DAY_OF_MONTH, day);calendar.getTime();calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return getSunday(calendar.getTime());}/** * @return * @作者 王建明 * @创建日期 2013-01-24 * @创建时间 08:53:51 * @描述 —— 获取本月第一天 */public static String firstDayOfMonth() {Calendar cal = Calendar.getInstance();SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");cal.set(Calendar.DATE, 1);cal.roll(Calendar.DATE, -1);// 当前月的第一天cal.set(GregorianCalendar.DAY_OF_MONTH, 1);Date beginTime = cal.getTime();String beginTime1 = datef.format(beginTime) + " 00:00:00";return beginTime1;}/** * @return * @作者 王建明 * @创建日期 2013-01-24 * @创建时间 08:54:06 * @描述 —— 获取本月最后一天 */public static String lastDayOfMonth() {Calendar cal = Calendar.getInstance();SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");// 当前月的最后一天cal.set(Calendar.DATE, 1);cal.roll(Calendar.DATE, -1);Date endTime = cal.getTime();String endTime1 = datef.format(endTime) + " 23:59:59";return endTime1;}/** * @return * @作者 王建明 * @创建日期 2013-05-22 * @创建时间 09:48:04 * @描述 —— 获取当前星期数字 */public static int getNowWeekNum() {int weekDay = Calendar.getInstance().get(Calendar.DAY_OF_WEEK);return weekDay == 1 ? 7 : weekDay - 1;}/** * @param week——周几数字【周一到周日分别对应1-7】 * @param time——时刻数字【例如:12代表12:00~12:59时间段】 * @return * @作者 王建明 * @创建日期 2013-05-22 * @创建时间 16:09:29 * @描述 —— 根据星期和时刻获取当前周的相应时间日期 */public static Date getNowWeekDate(int week, int time) {int mondayPlus = getMondayPlus() + (week - 1);GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date date = currentDate.getTime();String dateStr = CommonDateParseUtil.date2string(date,CommonDateParseUtil.YYYY_MM_DD);if (time < 10)dateStr += (" 0" + time + ":00:00");elsedateStr += (" " + time + ":00:00");// return preMonday;return CommonDateParseUtil.string2date(dateStr,CommonDateParseUtil.YYYY_MM_DD_HH_MM_SS);}// 获得当前日期与本周一相差的天数private static int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);if (dayOfWeek == 1) {return -6;} else {return 2 - dayOfWeek;}}/** * @param currentDate * @param num * @return * @作者 王建明 * @创建日期 2013-6-8 * @创建时间 下午2:44:24 * @描述 —— 获取与指定日期距离num天的日期 */public static Date getDateFromSourceDate(Date currentDate, int num) {GregorianCalendar cal = new GregorianCalendar();cal.setTime(currentDate);cal.add(GregorianCalendar.DATE, num);return cal.getTime();}/** * @param date1 * @param date2 * @return * @作者 王建明 * @创建日期 2013-06-20 * @创建时间 14:08:37 * @描述 —— 计算两个日期相隔多少天 */public static long differ(Date date1, Date date2) {Long differLong = date2.getTime() / 86400000 - date1.getTime()/ 86400000; // 用立即数,减少乘法计算的开销return Math.abs(differLong);}}


原创粉丝点击