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程序设计有所帮助。
上一篇: Java Socket编程实例(一)- TCP基本使用
下一篇: 微信开发协议小结