package com.coracle.worklog.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* 日期工具类
* Created by lwy on 2017/9/27.
*/
public class DateUtil {
private static DateUtil dateUtil;
private DateUtil(){
}
/**
* 获取DateUtil实例
*/
public static DateUtil getInstance(){
if(dateUtil==null){
synchronized(DateUtil.class){
if(dateUtil==null){
dateUtil=new DateUtil();
}
}
}
return dateUtil;
}
/**
* 日期转化为对应的格式字符串
* @param date 时间
* @param pattern 格式化的时间格式
*
* @return
*/
public String formatDate(Date date,String pattern){
SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);
return dateFormat.format(date);
}
/**
* 字符串转化为对应的日期格式
* @param dateStr 时间字符串
* @param format 格式化的时间格式
* @return
*/
public Date parseDate(String dateStr,String format) throws ParseException{
SimpleDateFormat dateFormat=new SimpleDateFormat(format);
return dateFormat.parse(dateStr);
}
/**
* 根据传入日期,获取当前日期的本周第一天(周一)
* @param date
* @return
*/
public Date getWeekHand(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);
return calendar.getTime();
}
/**
* 根据传入日期,获取当前日期的本周第一天(周一)
* @param date 日期
* @param pattern 要转化的格式
* @return
*/
public String getWeekHand(Date date,String pattern){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);
return formatDate(calendar.getTime(),pattern);
}
/**
* 根据传入日期,获取当前日期的本周最后一天(周日)
* @param date 日期
* @return
*/
public Date getWeekLast(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);
calendar.set(Calendar.DATE, calendar.get(calendar.DATE) + 6);
return calendar.getTime();
}
/**
* 根据传入日期,获取当前日期的本周最后一天(周日)
* @param date 日期
* @param pattern 要转化的格式
* @return
*/
public String getWeekLast(Date date,String pattern){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(calendar.DAY_OF_WEEK, calendar.MONDAY);
calendar.set(Calendar.DATE, calendar.get(calendar.DATE) + 6);
return formatDate(calendar.getTime(),pattern);
}
/**
* 日期加法
* @param dateStr 时间字符串格式
* @param day 要增加的天数
* @param pattern 时间格式
* @return
*/
public String addDate(String dateStr,int day,String pattern) throws ParseException{
Date date = parseDate(dateStr, pattern);
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);
return formatDate(calendar.getTime(),pattern);
}
/**
* 日期加法
* @param date 日期
* @param day 要增加的天数
* @return
*/
public Date addDate(Date date,int day){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);
return calendar.getTime();
}
/**
* 日期加法
* @param date 日期
* @param day 要增加的天数
* @param pattern 日期格式
* @return
*/
public String addDate(Date date,int day,String pattern){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)+day);
return formatDate(calendar.getTime(),pattern);
}
/**
* 日期减法
* @param dateStr 时间字符串格式
* @param day 要减少的天数
* @param pattern 时间格式
* @return
*/
public String minusDate(String dateStr,int day,String pattern) throws ParseException{
Date date = parseDate(dateStr,pattern);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);
return formatDate(calendar.getTime(),pattern);
}
/**
* 日期减法
* @param date 时间
* @param day 要减少的天数
* @return
*/
public Date minusDate(Date date,int day) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);
return calendar.getTime();
}
/**
* 日期减法
* @param date 时间
* @param day 要减少的天数
* @return
*/
public String minusDate(Date date,int day,String pattern) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH)-day);
return formatDate(calendar.getTime(),pattern);
}
public String getWeekOfMonth(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
return String.format(Locale.SIMPLIFIED_CHINESE,"%tb份第%d周",calendar.getTime(),weekOfMonth);
}
public String getWeekOfMonth(String dateStr,String pattern) throws ParseException{
Calendar calendar = Calendar.getInstance();
calendar.setTime(parseDate(dateStr,pattern));
calendar.setFirstDayOfWeek(Calendar.MONDAY);
int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
return String.format(Locale.SIMPLIFIED_CHINESE,"%tb份第%d周",calendar.getTime(),weekOfMonth);
}
public static void main(String[] args) {
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd");
try {
System.out.println(dateFormat.format(DateUtil.getInstance().getWeekHand(new Date())));
System.out.println(dateFormat.format(DateUtil.getInstance().getWeekLast(new Date())));
System.out.println(DateUtil.getInstance().minusDate("2017-09-27",2,"yyyy-MM-dd"));
System.out.println( DateUtil.getInstance().addDate("2017-09-27",2,"yyyy-MM-dd"));
System.out.println(DateUtil.getInstance().getWeekOfMonth(new Date()));
}catch (Exception ex){
ex.printStackTrace();
}
}
}
[java]日期工具类-DateUtil
最新推荐文章于 2024-04-28 00:11:08 发布