JAVA各类时间操作方法

最近的项目老用到不同的时间操作方法,看了半天文档,整理了一个基本工具类,应该能满足一般开发的需要了,罗列如下:


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

public class CommonTool {
   
    public static SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    public static SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
    

/**
  * 得到返回指定日期是星期几(1为周日;2为周一;依次类推)
  * @param date
  * @return
  */
 public static int getDateWeekDay(Date date){
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  return cal.get(Calendar.DAY_OF_WEEK);
 }
 
 /**
  * 获取当前自然年后的amount年的第一天的开始时间
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficYearStart(int amount){
  Calendar cal = Calendar.getInstance();  
  cal.add(Calendar.YEAR, amount);
  cal.set(Calendar.DAY_OF_YEAR, 1);
  return getStartDate(cal.getTime());
 }
 
 /**
  * 获取当前自然年后的amount年的最后一天的终止时间
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficYearEnd(int amount){  
  Date temp = getStartDate(getSpecficYearStart(amount + 1));
  
  Calendar cal = Calendar.getInstance(); 
  cal.setTime(temp);
  cal.add(Calendar.DAY_OF_YEAR, -1);
  return getFinallyDate(cal.getTime());
 }
 
 /**
  * 返回日期所在年份中的天数(1--366)
  * @param date
  * @return
  */
 public static int getYearDay(Date date){
  Calendar cal = Calendar.getInstance(); 
  cal.setTime(date);
  cal.add(Calendar.YEAR, 1);
  cal.set(Calendar.DAY_OF_YEAR, 1);
  cal.add(Calendar.DAY_OF_YEAR, -1);
  
  SimpleDateFormat format1 = new SimpleDateFormat("D");
  String aa = format1.format(cal.getTime());
  return Integer.parseInt(aa);
 }
 
 /**
  * 获取当前自然月后的amount月的第一天的开始时间
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficMonthStart(int amount){
  Calendar cal = Calendar.getInstance();  
  cal.add(Calendar.MONTH, amount);
  cal.set(Calendar.DAY_OF_MONTH, 1);
  return getStartDate(cal.getTime());
 }
 
 /**
  * 获取当前自然月后的amount月的最后一天的终止时间
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficMonthEnd(int amount){
  Calendar cal = Calendar.getInstance();  

  cal.setTime(getSpecficMonthStart(amount + 1));
  cal.add(Calendar.DAY_OF_YEAR, -1);
  return getFinallyDate(cal.getTime());
 }
 
 /**
  * 返回日期所在月份中的天数(1--31)
  * @param date
  * @return
  */
 public static int getMonthDay(Date date){
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  cal.add(Calendar.MONTH, 1);  
  cal.set(Calendar.DAY_OF_MONTH, 1);
  cal.add(Calendar.DAY_OF_YEAR, -1);
  
  SimpleDateFormat format1 = new SimpleDateFormat("d");
  String aa = format1.format(cal.getTime());
  return Integer.parseInt(aa);
 }
 
 /**
  * 获取当前自然周后的第amount周的开始时间(这里星期一为一周的开始)
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficWeekStart(int amount){
  Calendar cal = Calendar.getInstance();
     cal.setFirstDayOfWeek(Calendar.MONDAY);    /*设置一周的第一天为星期一*/
     
     cal.add(Calendar.WEEK_OF_MONTH, amount);
  cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);   
  return getStartDate(cal.getTime());
 }
 
 /**
  * 获取当前自然周后的第amount周的最后时间(这里星期日为一周的最后一天)
  * @param amount   可正、可负
  * @return
  */
 public static Date getSpecficWeekEnd(int amount){
  Calendar cal = Calendar.getInstance();
     cal.setFirstDayOfWeek(Calendar.MONDAY);    /*设置一周的第一天为星期一*/
     
     cal.add(Calendar.WEEK_OF_MONTH, amount);
  cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);   
  return getFinallyDate(cal.getTime());
 }

 
 /**
  * 得到指定日期的一天的的最后时刻23:59:59
  * @param date
  * @return
  */
 public static Date getFinallyDate(Date date){
  String temp = format.format(date);
  temp += " 23:59:59";
  
  try{
   return format1.parse(temp);
  }
  catch(ParseException e){
   return null;
  }
 }
 
 /**
  * 得到指定日期的一天的开始时刻00:00:00
  * @param date
  * @return
  */
 public static Date getStartDate(Date date){
  String temp = format.format(date);
  temp += " 00:00:00";
  
  try{
   return format1.parse(temp);
  }
  catch(Exception e){
   CPDLogDebug.printError(e, null);
   return null;
  }
 }
 
 /**
  * 得到当前时间后的指定天数的时间
  * @param amount   天数(可正、可负)
  * @return
  */
 public static Date getSpecficDate(int amount){
  Calendar cal = Calendar.getInstance();
  cal.add(Calendar.DAY_OF_YEAR, amount);
  
  return cal.getTime();
 }
 
 /**
  * 根据参照日期,得到其周边天数的日期
  * @param date
  * @param amount
  * @return
  */
 public static Date getSpecficDate(Date date, int amount){
  if(date == null) return getSpecficDate(amount);
  
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  cal.add(Calendar.DAY_OF_YEAR, amount);
  
  return cal.getTime();
  
 }

}

你可能感兴趣的:(Java)