java 日期计算类_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();

// Date

Date 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)));

// Timestamp

Timestamp 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);// 在月份上加1

return cal.getTime();

}

// 获取下一年的日期

public Date nextYear(Date currentDate) {

GregorianCalendar cal = new GregorianCalendar();

cal.setTime(currentDate);

cal.add(GregorianCalendar.YEAR, 1);// 在年上加1

return 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");

else

dateStr += (" " + 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);

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值