บทความนี้แบ่งปันคลาสเครื่องมือการดำเนินงาน Java Date สำหรับคุณโดยได้รับวันที่ที่ระบุหนึ่งวันก่อนและหนึ่งวันหลังจากวัน การแปลงวันที่; จำนวนวันระหว่างสองวันและเครื่องมืออื่น ๆ สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
นำเข้า java.text.parseException; นำเข้า java.text.simpledateFormat; นำเข้า java.util.arraylist; นำเข้า java.util.calendar; นำเข้า java.util.date นำเข้า java.util.list; วันที่คลาสสาธารณะ { / ** * วันก่อนวันที่ระบุ * * @param ระบุวัน * @param รูปแบบ * @return * @throws Exception * / วันที่คงที่สาธารณะ getdayBefore (วันที่วันที่, รูปแบบสตริง) {ปฏิทิน c = calendar.getInstance (); C.Settime (วันที่); int day = c.get (calendar.date); C.Set (Calendar.date, วัน - 1); String dayBeForestr = new SimpleDateFormat (รูปแบบ) .Format (C.GetTime ()); วันที่ daybefore = null; ลอง {daybefore = new SimpledateFormat (รูปแบบ) .parse (daybeforest); } catch (parseexception e) {e.printstacktrace (); } return daybefore; } / ** * วันหลังจากได้รับวันที่ที่ระบุ * * @param ระบุวัน * @return * / วันที่สาธารณะคงที่ getdayafter (วันที่วันที่, รูปแบบสตริง) {ปฏิทิน c = calendar.getInstance (); C.Settime (วันที่); int day = c.get (calendar.date); C.Set (Calendar.date, วัน + 1); String dayaftERSTR = ใหม่ SimpleDateFormat (รูปแบบ) .Format (C.GetTime ()); วันที่ dayafter = null; ลอง {dayafter = new SimpledateFormat (รูปแบบ) .parse (dayaftersstr); } catch (parseexception e) {e.printstacktrace (); } ส่งคืน dayafter; } / ** * รับวันก่อนวันที่ที่ระบุ * * @param ระบุวัน * @param รูปแบบ * @return * @throws Exception * / สตริงคงที่สาธารณะ getSpecifieddaybefore (String ระบุวันแบบสตริง) {// simpledateformat simpledateFormat = new // simpledateFormat ("yyyy-mm-dd"); ปฏิทิน C = Calendar.getInstance (); วันที่วันที่ = null; ลอง {date = new SimpledateFormat ("yy-mm-dd"). parse (ระบุวัน); } catch (parseexception e) {e.printstacktrace (); } C.Settime (วันที่); int day = c.get (calendar.date); C.Set (Calendar.date, วัน - 1); String dayBefore = ใหม่ simpledateFormat ("yyyy-mm-dd") รูปแบบ (c.getTime ()); คืนวันก่อน; } / ** * วันหลังจากได้รับวันที่ที่ระบุ * * @param ระบุวัน * @return * / สตริงคงที่สาธารณะ getSpecifieddayafter (String ระบุวัน, รูปแบบสตริง) {ปฏิทิน c = calendar.getInstance (); วันที่วันที่ = null; ลอง {// date = new SimpledateFormat ("yy-mm-dd"). parse (ระบุวัน); วันที่ = ใหม่ simpledateFormat (รูปแบบ) .parse (ระบุวัน); } catch (parseexception e) {e.printstacktrace (); } C.Settime (วันที่); int day = c.get (calendar.date); C.Set (Calendar.date, วัน + 1); // String dayafter = new // simpledateFormat ("yyyy-mm-dd") รูปแบบ (c.getTime ()); String dayafter = new SimpledateFormat (รูปแบบ) .Format (c.getTime ()); คืนวันหลัง; } / ** * แม่นยำประเภทวันที่ลงในสตริงในรูปแบบที่ระบุ * * @param วันวันที่ * @param รูปแบบระบุรูปแบบ * @return * / สตริงคงที่สาธารณะวันที่ 2String (วันที่วันที่, รูปแบบสตริง) {สตริง datestr = new SimpledateFormat (รูปแบบ) ส่งคืน Datestr; } / ** * แปลงสตริงเป็นประเภทวันที่ในรูปแบบที่ระบุ * * @param วันวันที่ * @param รูปแบบระบุรูปแบบ * @return * / วันที่สาธารณะ String2date (สตริง datestr, รูปแบบสตริง) {วันที่ strdate = null; ลอง {strdate = new SimpledateFormat (รูปแบบ) .parse (datestr); } catch (parseexception e) {e.printstacktrace (); } return strdate; } / **** @title: datate2comparevalue* @description: สองประเภทวันที่เปรียบเทียบขนาด* @param dayafter ประเภทวันที่* @param วันที่วันที่* @param การจัดรูปแบบ* @return boolean* @throws* SimpledateFormat (รูปแบบ); ลอง {วันที่ d1 = sdf.parse (sdf.format (dayafter)); วันที่ d2 = sdf.parse (sdf.format (วันที่)); if (d1.getTime ()> = d2.getTime ()) {return true; }} catch (parseexception e) {e.printstacktrace (); } return false; } / ** * เปรียบเทียบขนาดของสองวัน, ปี, เดือนและวัน * @title: datecomparevalue * @description: วันที่มีความเสถียรหนึ่งประเภทเปรียบเทียบขนาด * @param วันที่ 1 ประเภทสตริง * @param วันที่ SimpledateFormat SDF = ใหม่ SimpleDateFormat (รูปแบบ); ลอง {วันที่ d1 = sdf.parse (วันที่ 1); วันที่ d2 = sdf.parse (sdf.format (วันที่)); if (d1.getTime ()> = d2.getTime ()) {return true; }} catch (parseexception e) {// todo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printstacktrace (); } return false; } / ** * เปรียบเทียบขนาดของสองวัน, ปี, เดือนและวัน * @title: datestr2comparevalue * @description: สองประเภทสตริงเปรียบเทียบขนาดเวลา * @param วันที่ 1 * @param วันที่ 2 * @return boolean * @throws * / @suppresswarnings {SimpledateFormat SDF = ใหม่ SimpleDateFormat (รูปแบบ); ลอง {วันที่ d1 = sdf.parse (วันที่ 1); วันที่ d2 = sdf.parse (วันที่ 2); if (d1.getTime ()> = d2.getTime ()) {return true; }} catch (parseexception e) {e.printstacktrace (); } return false; } / **** @title: get2DateListDate* @date 17 พฤษภาคม 2016 เวลา 2:11:48 PM* @description: รับวันที่ของวันที่ห่างกันภายในเวลา* @param @param วันที่เริ่มต้น* @param @param @param รายการ <วันที่> get2DateListDate (สตริงวันที่ก่อนวัน, สตริง nextDate, รูปแบบสตริง) {รายการ <วันที่> list = new ArrayList <> (); if (nextdate.equals (ก่อนวัน)) {// ถ้าเวลาเริ่มต้นและเวลาเริ่มต้นเท่ากันให้กลับไปที่ list.add (dateutil.string2date (วันที่, รูปแบบ)); รายการคืน; } String nexdate = dateUtil.getSpecifiedDayafter (ก่อนวัน, รูปแบบ); list.add (dateutil.string2date (วันก่อนหน้า, รูปแบบ)); list.add (dateutil.string2date (nexdate, รูปแบบ)); ในขณะที่ (! nexdate.equals (NextDate)) {String nextNextDate = dateUtil.getSpecifiedDayafter (nexdate, รูปแบบ); list.add (dateutil.string2date (nextdate, รูปแบบ)); nexdate = nextnextdate; } return list; } / **** @title: get2DateListDate* @Date 17 พฤษภาคม 2016 เวลา 2:11:48 PM* @Description: รับสตริงคอลเลกชันของวันห่างออกไปภายในเวลา* @param @param วันที่เริ่มต้น* @param @param @param รายการ <String> get2DatelistDatestr (สตริงก่อนวันที่, สตริง nextDate, รูปแบบสตริง) {รายการ <String> list = new ArrayList <> (); if (nextdate.equals (ก่อนกำหนด)) {// ถ้าเวลาเริ่มต้นเท่ากับเวลาสิ้นสุดแล้วมันเป็นวันเดียวกัน list.add (ก่อนวัน); รายการคืน; } String nexdate = dateUtil.getSpecifiedDayafter (ก่อนวัน, รูปแบบ); list.Add (ก่อนวัน); list.add (nexdate); ในขณะที่ (! nexdate.equals (NextDate)) {String nextNextDate = dateUtil.getSpecifiedDayafter (nexdate, รูปแบบ); list.add (NextDate); nexdate = nextnextdate; } return list; } / ** * * @title: get2DateListWithDate * @Date 26 พฤษภาคม 2016 เวลา 9:20:29 น. * @description: รับวันที่ระหว่างสองวัน * @param @param startdate วันที่เริ่มต้นวันที่ * @param @param enddate enddate วันที่ get2DateListWithDate (วันที่เริ่มต้นวันที่สิ้นสุดวันที่, รูปแบบสตริง) {รายการ <วันที่> list = new ArrayList <> (); if (startDate.getTime ()> enddate.getTime ()) {return list; } String startDatestS = dateUtil.Date2String (startDate, รูปแบบ); String enddatestr = dateutil.date2string (enddate, รูปแบบ); ถ้า (startDatestSTR.Equals (endDatestr)) {// ถ้าเวลาเริ่มต้นเท่ากับเวลาสิ้นสุดมันเป็นวันเดียวกัน list.add (startDate); รายการคืน; } วันที่ nextDate = dateUtil.getDayAfter (startDate, รูปแบบ); สตริง nextDatestr = dateUt.Date2String (NextDate, รูปแบบ); // string enddatestr = dateutil.date2string (enddate, รูปแบบ); list.add (startdate); list.add (NextDate); ในขณะที่ (! nextdatestr.equals (enddatestr)) {string nextnextdate = dateutil.getspecifieddayafter (NextDatestr, รูปแบบ); list.add (dateutil.string2date (nextdate, รูปแบบ)); nextDatestr = nextnextdate; } return list; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) โยนข้อยกเว้น { / ** / สตริง pretedate = getSpecifieddaybefore ("2016-05-01", "yyyy-mm-dd"); String nextDate = getSpecifieddayafter ("2016-05-03", "yyyy-mm-dd"); วันที่ befroday = getdaybefore (วันที่ใหม่ (), "yyyy-mm-dd"); วันที่ datefter = getDayAfter (วันที่ใหม่ (), "yyyy-mm-dd"); // system.out.println ("วันก่อนหน้า:" + predate + "วันถัดไป:" + nextdate); // system.err.println ("วันก่อนหน้า:" + date2string (befroday, "yyyy-mm-dd") + "// ในวันถัดไป:" + datefter); String mat = "yyyy-mm-dd"; // เป็นการดีที่สุดที่จะอ่าน simpledateFormat จากฐานข้อมูล datetimeFormat = ใหม่ simpledateFormat; วันที่ dd = dateutil.getdaybefore (วันที่ใหม่ (), mat); // วันที่ befroday = getdaybefore (วันที่ใหม่ (), "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"); วันที่เริ่มต้น = วันที่ใหม่ (); วันที่ enddate = dateTimeFormat.parse ("2016-05-31"); รายการ <ate> listdate = get2DateListWithDate (startDate, enddate, "yyyy-mm-dd"); สำหรับ (int i = 0; i <listdate.size (); i ++) {system.err.println (listdate.get (i)); } /*สำหรับ (int i = 0; i <listdatestr.size (); i ++) {//system.out.println(listdatestr.get(i)); -ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนในการเรียนรู้การเขียนโปรแกรม Java