java下一周周一_java 星期幾、得周一、得周日、上周、下周、相差、日期工具類...

import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

/**

* 日期工具類

*

* @author silence

* @version 2017/12/24

*/

public class DateUtil {

private static final String YYYY_MM_DD = "yyyy-MM-dd";

public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");

public static final SimpleDateFormat TIME_FORMAT = new SimpleDateFormat("HH:mm:ss");

public static final int DAYS_OF_ONE_WEEK = 7;

/**

* 查當前日期是一周中的第幾天、星期幾

* @return

*/

public static long getWhicthDay(Date today){

Calendar cal = Calendar.getInstance();

cal.setTime(today);

// 1=Sunday,2=Monday,,,7=Saturday。

return cal.get(Calendar.DAY_OF_WEEK);

}

/**

* 判斷日期是否相等 年/月/日相等 就是相等了

*

* @param day1

* @param day2

* @return

*/

public static boolean isDateEqualToday(Date day1, Date day2) {

return day1.getYear() == day2.getYear()

&& day1.getMonth() == day2.getMonth()

&& day1.getDay() == day2.getDay();

}

/**

* 計算距離baseDate 若干天的 日期

* days=2 表示2天后

* days=-1 一天前

*

* @param baseDate 日期 null 表示當前日期

* @param days 日期

* @return

*/

public static Date daysBetweenWeeks(Date baseDate, int days) {

Calendar c = Calendar.getInstance();

if (baseDate != null)

c.setTime(baseDate);

c.add(Calendar.DAY_OF_MONTH, days);

return c.getTime();

}

public static java.sql.Date fromUtilDate(Date utilDate) {

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());

return sqlDate;

}

// public static Date lastMonday() {

// Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);

// return mondayOfThisWeek(_7daysBefore);

// }

//

// public static Date lastSunday() {

// Date _7daysBefore = daysBetweenWeeks(null, -DAYS_OF_ONE_WEEK);

// return sundayOfThisWeek(_7daysBefore);

// }

/**

* 獲取某個日期對應的 日期 的周一

*

* @param theDate 某個日期 null的話,表示當前日期

* @return Date

*/

public static Date mondayOfThisWeek(Date theDate) {

Calendar c = Calendar.getInstance();

if (theDate != null) c.setTime(theDate);

c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // 獲取 周一

return c.getTime();

}

/**

* 獲取某個日期對應的 日期 的周日

*

* @param theDate 某個日期 null的話,表示當前日期

* 獲取當前日期的周7,注意 日歷獲取的周期是

* 周日,1,2,3,4,5,6 不是中國傳統的

* 1,2,3,4,5,6,周日

* 所以要加7

* @return Date

*/

public static Date sundayOfThisWeek(Date theDate) {

Calendar c = Calendar.getInstance();

if (theDate != null) c.setTime(theDate);

c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 獲取 周日

c.add(Calendar.DAY_OF_MONTH, 7); // 獲取 中國意義上的 周日

return c.getTime();

}

/**

* 獲取某個日期對應的 日期 的周日

*

* @param theDate 某個日期 null的話,表示當前日期

* 獲取當前日期的周7,注意 日歷獲取的周期是

* 周日,1,2,3,4,5,6 不是中國傳統的

* 1,2,3,4,5,6,周日

* 所以要加7

* @return Date

*/

public static Date getSundayOfThisWeek(Date theDate) {

Calendar c = Calendar.getInstance();

if (theDate != null) c.setTime(theDate);

c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); // 獲取 周日

c.add(Calendar.DAY_OF_MONTH, 7); // 獲取 中國意義上的 周日

if(getWhicthDay(theDate)==1){

c.add(Calendar.DATE, c.getFirstDayOfWeek() - 8);

}

return c.getTime();

}

/**

* 字符串轉換為日期類型

*

* @param dateString

* @return

*/

public static Date stringToDate(String dateString) {

try {

SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);

return sdf.parse(dateString);

} catch (ParseException e) {

System.out.println(e.getMessage());

}

return null;

}

public static String dateToString(Date date) {

try {

SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);

return sdf.format(date);

} catch (Exception e) {

System.out.println(e.getMessage());

}

return date.toString();

}

/**

* YYYY:MM:DD hh:mm:ss --->YYYY:MM:DD

*

* @param date

* @return

*/

public static Date timeToDate(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat(YYYY_MM_DD);

String s = sdf.format(date);

try {

return sdf.parse(s);

} catch (ParseException e) {

e.printStackTrace();

}

return null;

}

/**

* 獲取某天當前周的周一

* @param date

* @return

*/

public static Date getThisWeekMonday(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

// 獲得當前日期是一個星期的第幾天

int dayWeek = cal.get(Calendar.DAY_OF_WEEK);

if (1 == dayWeek) {

cal.add(Calendar.DAY_OF_MONTH, -1);

}

// 設置一個星期的第一天,按中國的習慣一個星期的第一天是星期一

cal.setFirstDayOfWeek(Calendar.MONDAY);

// 獲得當前日期是一個星期的第幾天

int day = cal.get(Calendar.DAY_OF_WEEK);

// 根據日歷的規則,當前日期減去 星期幾與一個星期第一天的差值 即可計算當前周期第一天

cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day);

return cal.getTime();

}

/**

* 獲取某天上周一的日期

*

* @param date

* @return

*/

public static Date geLastWeekMonday(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(getThisWeekMonday(date));

cal.add(Calendar.DATE, -7);

return cal.getTime();

}

/**

* 獲取某天下周一的日期

*

* @param date

* @return

*/

public static Date getNextWeekMonday(Date date) {

Calendar cal = Calendar.getInstance();

cal.setTime(getThisWeekMonday(date));

cal.add(Calendar.DATE, 7);

return cal.getTime();

}

/**

* 獲取某天的前后幾天的日期

*

* @param date

* @param day :正數表示后幾天,負數表示前幾天

* @return

*/

public static Date addDay(Date date, int day) {

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.DATE, day);

return cal.getTime();

}

/**

* 添加時間

*

* @param date

* @param time hh:mm:ss

* @return

*/

public static Date addTime(Date date, String time) {

if (StringUtils.isEmpty(time)) return date;

Calendar cd = Calendar.getInstance();

cd.setTime(date);

String[] times = time.split(":");//eg:["01","00","00"]

int[] timeUnit = {Calendar.HOUR, Calendar.MINUTE, Calendar.SECOND};

if (date != null) {

for (int i = 0; i < times.length; i++) {

cd.add(timeUnit[i], Integer.valueOf(times[i]));

}

}

return cd.getTime();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值