欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java日期操作工具类(获取指定日期、日期转换、相隔天数)

程序员文章站 2024-03-12 13:39:20
本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下 import java....

本文实例为大家分享了java日期操作工具类,获取指定日期前一天、后一天;日期转换;两个日期之间相隔天数等工具类,供大家参考,具体内容如下

import java.text.parseexception;
import java.text.simpledateformat;
import java.util.arraylist;
import java.util.calendar;
import java.util.date;
import java.util.list;
 
public class dateutil {
   
  /**
   * 获得指定日期的前一天
   * 
   * @param specifiedday
   * @param format
   * @return
   * @throws exception
   */
  public static date getdaybefore(date date, string format) {
    calendar c = calendar.getinstance();
    c.settime(date);
    int day = c.get(calendar.date);
    c.set(calendar.date, day - 1);
 
    string daybeforestr = new simpledateformat(format).format(c.gettime());
     
    date daybefore = null;
    try {
      daybefore = new simpledateformat(format).parse(daybeforestr);
    } catch (parseexception e) {
      e.printstacktrace();
    }
    return daybefore;
  }
   
   
  /**
   * 获得指定日期的后一天
   * 
   * @param specifiedday
   * @return
   */
  public static date getdayafter(date date, string format) {
    calendar c = calendar.getinstance();
    c.settime(date);
    int day = c.get(calendar.date);
    c.set(calendar.date, day + 1);
    string dayafterstr = new simpledateformat(format).format(c.gettime());
    date dayafter = null;
    try {
      dayafter = new simpledateformat(format).parse(dayafterstr);
    } catch (parseexception e) {
      e.printstacktrace();
    }
    return dayafter;
  }
 
   
   
  /**
   * 获得指定日期的前一天
   * 
   * @param specifiedday
   * @param format
   * @return
   * @throws exception
   */
  public static string getspecifieddaybefore(string specifiedday, string format) {
    // simpledateformat simpledateformat = new
    // simpledateformat("yyyy-mm-dd");
    calendar c = calendar.getinstance();
    date date = null;
    try {
      date = new simpledateformat("yy-mm-dd").parse(specifiedday);
    } catch (parseexception e) {
      e.printstacktrace();
    }
    c.settime(date);
    int day = c.get(calendar.date);
    c.set(calendar.date, day - 1);
 
    string daybefore = new simpledateformat("yyyy-mm-dd").format(c.gettime());
    return daybefore;
  }
 
  /**
   * 获得指定日期的后一天
   * 
   * @param specifiedday
   * @return
   */
  public static string getspecifieddayafter(string specifiedday, string format) {
    calendar c = calendar.getinstance();
    date date = null;
    try {
      // date = new simpledateformat("yy-mm-dd").parse(specifiedday);
      date = new simpledateformat(format).parse(specifiedday);
    } catch (parseexception e) {
      e.printstacktrace();
    }
    c.settime(date);
    int day = c.get(calendar.date);
    c.set(calendar.date, day + 1);
 
    // string dayafter=new
    // simpledateformat("yyyy-mm-dd").format(c.gettime());
    string dayafter = new simpledateformat(format).format(c.gettime());
    return dayafter;
  }
   
  /**
   * 将date类型准成指定format格式的字符串
   * 
   * @param day 日期
   * @param format 指定格式
   * @return
   */
  public static string date2string(date day, string format) {
    string datestr = new simpledateformat(format).format(day.gettime());
    return datestr;
  }
 
  /**
   * 将字符串转成指定格式的date类型
   * 
   * @param day 日期
   * @param format 指定格式
   * @return
   */
  public static date string2date(string datestr,string format) {
    date strdate = null;
    try {
      strdate = new simpledateformat(format).parse(datestr);
    } catch (parseexception e) {
      e.printstacktrace();
    }
    return strdate;
  }
   
   
  /**
   * 
  * @title: datedate2comparevalue 
  * @description: 两个date类型比较大小
  * @param dayafter date类型
  * @param date   date类型
  * @param 格式化
  * @return boolean  
  * @throws
   */
  public static boolean datedate2comparevalue(date dayafter, date date, string pattern) {
    simpledateformat sdf = new simpledateformat(pattern);
    try {
      date d1 = sdf.parse(sdf.format(dayafter));
      date d2 = sdf.parse(sdf.format(date));
      if(d1.gettime()>=d2.gettime()){
        return true;
      }
    } catch (parseexception e) {
      e.printstacktrace();
    }
    return false;
  }
 
  /**
   * 比较两个日期年月日的大小
  * @title: datecomparevalue 
  * @description: 一个stirng一个date类型比较大小
  * @param date1 string类型
  * @param date2 date类型
  * @param @return  
  * @return boolean  
  * @throws
   */
  public static boolean datestrdatecomparevalue(string date1, date date, string pattern) {
    simpledateformat sdf = new simpledateformat(pattern);
    try {
      date d1 = sdf.parse(date1);
      date d2 = sdf.parse(sdf.format(date));
      if(d1.gettime()>=d2.gettime()){
        return true;
      }
    } catch (parseexception e) {
      // todo auto-generated catch block
      e.printstacktrace();
    }
    return false;
  }
 
  /**
   * 比较两个日期年月日的大小
  * @title: datestr2comparevalue 
  * @description: 两个string类型比较时间大小
  * @param date1
  * @param date2
  * @return boolean  
  * @throws
   */
  @suppresswarnings("unused")
  public static boolean datestr2comparevalue(string date1, string date2,string pattern) {
  simpledateformat sdf = new simpledateformat(pattern);
  try {
    date d1 = sdf.parse(date1);
    date d2 = sdf.parse(date2);
    if(d1.gettime()>=d2.gettime()){
      return true;
    }
  } catch (parseexception e) {
    e.printstacktrace();
  }
   
    return false;
  }
   
  /**
   * 
  * @title: get2datelistdate 
  * @date 2016年5月17日 下午2:11:48 
  * @description: 获取时间之内的 相隔天数的date集合
  * @param @param predate 开始时间
  * @param @param nextdate 结束时间
  * @param @param format  fomat格式
  * @param @return  
  * @return list<date> 相隔天数集合 
  * @throws
   */
  public static list<date> get2datelistdate(string predate, string nextdate, string format) {
    list<date> list = new arraylist<>();
    if(nextdate.equals(predate)){//开始时间 结束时间相等就直接返回
      list.add(dateutil.string2date(predate, format));
      return list;
    }
    string nexdate = dateutil.getspecifieddayafter(predate, format);
    list.add(dateutil.string2date(predate, format));
    list.add(dateutil.string2date(nexdate, format));
    while (!nexdate.equals(nextdate)) {
      string nextnextdate = dateutil.getspecifieddayafter(nexdate, format);
      list.add(dateutil.string2date(nextnextdate, format));
      nexdate = nextnextdate;
    }
    return list;
  }
   
  /**
   * 
  * @title: get2datelistdate 
  * @date 2016年5月17日 下午2:11:48 
  * @description: 获取时间之内的 相隔天数的string集合
  * @param @param predate 开始时间
  * @param @param nextdate 结束时间
  * @param @param format  fomat格式
  * @param @return  
  * @return list<date> 相隔天数集合 
  * @throws
   */
  public static list<string> get2datelistdatestr(string predate, string nextdate, string format) {
    list<string> list = new arraylist<>();
    if(nextdate.equals(predate)){//如果开始时间等于结束时间那么就是同一天
      list.add(predate);
      return list;
    }
    string nexdate = dateutil.getspecifieddayafter(predate, format);
    list.add(predate);
    list.add(nexdate);
    while (!nexdate.equals(nextdate)) {
      string nextnextdate = dateutil.getspecifieddayafter(nexdate, format);
      list.add(nextnextdate);
      nexdate = nextnextdate;
    }
    return list;
  }
   
   
  /**
   * 
  * @title: get2datelistwithdate 
  * @date 2016年5月26日 上午9:20:29 
  * @description: 获取两个日期之间日期的 
  * @param @param startdate 开始日期 date类型
  * @param @param enddate  结束日期 date类型
  * @param @return  
  * @return list<date>  datelist
  * @throws
   */
  public static list<date> get2datelistwithdate(date startdate, date enddate,string format) {
    list<date> list = new arraylist<>();
    if(startdate.gettime() >enddate.gettime()){
      return list;
    }
    string startdatestr = dateutil.date2string(startdate, format);
    string enddatestr = dateutil.date2string(enddate, format);
    if(startdatestr.equals(enddatestr)){//如果开始时间等于结束时间那么就是同一天
      list.add(startdate);
      return list;
    }
    date nextdate = dateutil.getdayafter(startdate, format);
    string nextdatestr = dateutil.date2string(nextdate, format);
    //string enddatestr = dateutil.date2string(enddate, format);
    list.add(startdate);
    list.add(nextdate);
    while (!nextdatestr.equals(enddatestr)) {
      string nextnextdate = dateutil.getspecifieddayafter(nextdatestr, format);
      list.add(dateutil.string2date(nextnextdate, format));
      nextdatestr = nextnextdate;
    }
     
     
    return list;
  }
 
   
   
  public static void main(string[] args) throws exception {
 
    /**/ string predate = getspecifieddaybefore("2016-05-01", "yyyy-mm-dd");
    string nextdate = getspecifieddayafter("2016-05-03", "yyyy-mm-dd");
 
    date befroday = getdaybefore(new date(), "yyyy-mm-dd");
    date dateafter = getdayafter(new date(), "yyyy-mm-dd");
 
    // system.out.println("前一天:" + predate + " 后一天:" + nextdate);
    // system.err.println("前一天:" +date2string( befroday ,"yyyy-mm-dd")+ "
    // 后一天:" + dateafter);
 
    string mat = "yyyy-mm-dd";// 这里最好从数据库中读取
    simpledateformat datetimeformat = new simpledateformat(mat);
    date dd = dateutil.getdaybefore(new date(), mat);
    // date befroday = getdaybefore(new date(), "yyyy-mm-dd");
    string sd = date2string(befroday, "yyyy-mm-dd");
    string datestr = datetimeformat.format(befroday);
    // system.out.println("datestr="+datestr+" sd "+sd);
 
    //list<date> listdate = get2datelistdate("2016-05-01", "2016-05-03", "yyyy-mm-dd");
    //list<string> listdatestr = get2datelistdatestr("2016-05-01", "2016-05-03", "yyyy-mm-dd");
    date startdate = new date();
    date enddate = datetimeformat.parse("2016-05-31");
    list<date> listdate = get2datelistwithdate(startdate,enddate,"yyyy-mm-dd");
     
    for (int i = 0; i < listdate.size(); i++) {
      system.err.println(listdate.get(i));
    }
 
    /*for (int i = 0; i < listdatestr.size(); i++) {
      //system.out.println(listdatestr.get(i));
    }*/
 
  }

以上就是本文的全部内容,希望对大家的学习java程序设计有所帮助。