日期时间工具类

  /**
* 取得当前日期所在周的第一天
*
* @param date
* @return
*/
public static Date getFirstDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK,
calendar.getFirstDayOfWeek()); // Sunday
return calendar.getTime();
}


/**
* 取得当前日期所在周的最后一天
*
* @param date
* @return
*/
public static Date getLastDayOfWeek(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.SUNDAY);
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_WEEK,
calendar.getFirstDayOfWeek() + 6); // Saturday
return calendar.getTime();
}




/**
* 日期加减天数,并以Date形式返回
* @param value
* @param num
* @return
*/
public static Date addDays(Date date, int num) {
if (date == null) {
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, num);
return c.getTime();
}

/**
* 日期加减月数,并以Date形式返回
* @param value
* @param num
* @return
*/
public static Date addMonths(Date date, int num) {
if (date == null) {
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.MONTH, num);
return c.getTime();
}

public static void main(String[] args) {
Date dt=new Date();
System.out.println("本周第一天:"+getFirstDayOfWeek(dt)+";"+DateExtendUtils.addDay(getFirstDayOfWeek(dt), 1));
System.out.println("本周最后一天:"+getLastDayOfWeek(dt)+";"+DateExtendUtils.addDay(getLastDayOfWeek(dt), 1));
}


/**
* 增加日期的年份。失败返回null。
*
* @param date
* 日期
* @param yearAmount
* 增加数量。可为负数
* @return 增加年份后的日期字符串
*/
public static String addYear(String date, int yearAmount) {
return addInteger(date, Calendar.YEAR, yearAmount);
}

/**
* 增加日期的年份。失败返回null。
*
* @param date
* 日期
* @param yearAmount
* 增加数量。可为负数
* @return 增加年份后的日期
*/
public static Date addYear(Date date, int yearAmount) {
return addInteger(date, Calendar.YEAR, yearAmount);
}

/**
* 增加日期的月份。失败返回null。
*
* @param date
* 日期
* @param monthAmount
* 增加数量。可为负数
* @return 增加月份后的日期字符串
*/
public static String addMonth(String date, int monthAmount) {
return addInteger(date, Calendar.MONTH, monthAmount);
}

/**
* 增加日期的月份。失败返回null。
*
* @param date
* 日期
* @param monthAmount
* 增加数量。可为负数
* @return 增加月份后的日期
*/
public static Date addMonth(Date date, int monthAmount) {
return addInteger(date, Calendar.MONTH, monthAmount);
}

/**
* 增加日期的天数。失败返回null。
*
* @param date
* 日期字符串
* @param dayAmount
* 增加数量。可为负数
* @return 增加天数后的日期字符串
*/
public static String addDay(String date, int dayAmount) {
return addInteger(date, Calendar.DATE, dayAmount);
}

/**
* 增加日期的天数。失败返回null。
*
* @param date
* 日期
* @param dayAmount
* 增加数量。可为负数
* @return 增加天数后的日期
*/
public static Date addDay(Date date, int dayAmount) {
return addInteger(date, Calendar.DATE, dayAmount);
}

/**
* 增加日期的小时。失败返回null。
*
* @param date
* 日期字符串
* @param hourAmount
* 增加数量。可为负数
* @return 增加小时后的日期字符串
*/
public static String addHour(String date, int hourAmount) {
return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
}

/**
* 增加日期的小时。失败返回null。
*
* @param date
* 日期
* @param hourAmount
* 增加数量。可为负数
* @return 增加小时后的日期
*/
public static Date addHour(Date date, int hourAmount) {
return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
}

/**
* 增加日期的分钟。失败返回null。
*
* @param date
* 日期字符串
* @param minuteAmount
* 增加数量。可为负数
* @return 增加分钟后的日期字符串
*/
public static String addMinute(String date, int minuteAmount) {
return addInteger(date, Calendar.MINUTE, minuteAmount);
}

/**
* 增加日期的分钟。失败返回null。
*
* @param date
* 日期
* @param dayAmount
* 增加数量。可为负数
* @return 增加分钟后的日期
*/
public static Date addMinute(Date date, int minuteAmount) {
return addInteger(date, Calendar.MINUTE, minuteAmount);
}

/**
* 增加日期的秒钟。失败返回null。
*
* @param date
* 日期字符串
* @param dayAmount
* 增加数量。可为负数
* @return 增加秒钟后的日期字符串
*/
public static String addSecond(String date, int secondAmount) {
return addInteger(date, Calendar.SECOND, secondAmount);
}

/**
* 增加日期的秒钟。失败返回null。
*
* @param date
* 日期
* @param dayAmount
* 增加数量。可为负数
* @return 增加秒钟后的日期
*/
public static Date addSecond(Date date, int secondAmount) {
return addInteger(date, Calendar.SECOND, secondAmount);
}




/**
* "yyyy-MM-dd HH:mm:ss"
*/
public static String DATE_PATTERN_01="yyyy-MM-dd HH:mm:ss";

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.commons.lang.StringUtils;

import com.bill99.mbp.common.enums.CommonConstants;
/**
* 日期时间处理工具类
*/
public class TestDateUtils {
/**
* 线程隔离的THREADLOCAL_SDF
* (ThreadLocal用于保存某个线程共享变量:
* 对于同一个static ThreadLocal,不同线程只能从中get,set,remove自己的变量,而不会影响其他线程的变量)
*/
private static final ThreadLocal<SimpleDateFormat> THREADLOCAL_SDF= new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
return new SimpleDateFormat(CommonConstants.DATE_PATTERN_01);
}
};

/**
* 将Date格式按照默认的pattern形式转换为字符串格式
* @param date
* @return
*/
public static String formatFun(Date date) {
return THREADLOCAL_SDF.get().format(date);
}

/**
* 将Date格式按照pattern形式转换为字符串格式
* @param date
* @param pattern
* @return
*/
public static String formatFun(Date date, String pattern) {
if(null == date || StringUtils.isBlank(pattern)){
return "";
}
SimpleDateFormat sdf = THREADLOCAL_SDF.get();
try {
sdf.applyPattern(pattern);
return sdf.format(date);
} finally {
sdf.applyPattern(CommonConstants.DATE_PATTERN_01);
}

}
/**
* 时间戳转换成日期格式字符串
* @param seconds 精确到秒的字符串
* @param formatStr
* @return
*/
public static String timeStamp2DateFun(Long date) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (date == null || date.equals("null")) {
return "";
}
return format.format(date);
}

/**
* 将时间转换为时间戳
*/
public static Long date2StampFun(String s) throws ParseException{
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = simpleDateFormat.parse(s);
Long ts = date.getTime();
return ts;
}

public static void main(String[] args) {
Date now=new Date();
String nowStr=format(now);
System.out.println(nowStr);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值