บทความนี้แบ่งออกเป็นสองส่วนสำหรับการประมวลผลวันที่ นี่คือการแนะนำรายละเอียดเกี่ยวกับเรื่องนี้
ส่วนที่ 1: พื้นฐานของการประมวลผลวันที่
คลาสวันที่ <br /> ฟังก์ชั่น: ฟังก์ชั่นหลักคือการรับเวลาปัจจุบันและแปลงวันที่เป็นรูปแบบมาตรฐาน
วันที่ = วันที่ใหม่ (); SimpledateFormat SDF = ใหม่ simpledateFormat ("yyyy-mm-dd hh: mm: ss"); string str = sdf.format (วันที่); system.out.println ("2015-10-16 14:59:52"); แปลงสตริงเป็นวันที่
String Day = "2014-6-5 10:30:30"; SimpledateFormat D2 = New SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); วันที่ 2 = D2.Parse (วัน); System.out.println ("Thu Jun 05 10:30:30 CST 2014"); แอปพลิเคชันคลาสปฏิทิน
คลาส Java.util.Calendar เป็นคลาสนามธรรม คุณสามารถรับวัตถุปฏิทินโดยเรียกวิธีการ getInstance () แบบคงที่ วัตถุนี้ได้รับการเริ่มต้นโดยวันที่และเวลาปัจจุบันนั่นคือมันแสดงถึงเวลาปัจจุบันโดยค่าเริ่มต้น
ปฏิทิน c = calendar.getInstance (); int year = c.get (calender.year); int month = c.get (calender.month) +1; // รับเดือน, 0 หมายถึงวันมกราคม int = c.get (calender.day_of_month); int hour = c.get (calender.hour_of_day); int นาที = c.get (calender.minute); int second = c.get (calender.second);
เปรียบเทียบ 2 เดือนกับเวลาที่แตกต่างกัน
SimpledateFormat format = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); datetime d1 = dateTime ใหม่ (format.parse ("2016-10-31 00:00:00:00" 00:00:00 ")); System.out.println (Math.Abs (เดือนเดือนระหว่าง (D1, D2) .getMonths ()));ส่วนที่ 2: คลาสเครื่องมือประมวลผลวันที่
แพ็คเกจ com.analysys.website.control; นำเข้า java.text.parseException; นำเข้า java.text.parseposition; นำเข้า java.text.simpledateFormat; นำเข้า java.util.calendar; นำเข้า java.util.date นำเข้า java.util.gregoriancalendar; นำเข้า org.apache.commons.lang.stringutils; นำเข้า org.apache.log4j.logger; /** * คลาสเครื่องมือการประมวลผลวันที่ * @author dylan_xu * @date มี.ค. 11, 2012 * @modified โดย * @modified วันที่ * @since jdk1.6 * @see com.util.dateutil */ชั้นเรียนสาธารณะ {// ~ ฟิลด์คงที่/เริ่มต้น // - - Logger Logger แบบคงที่ส่วนตัว = logger.getLogger (dateutil.class); สตริงคงที่ส่วนตัว defaultDatePattern = null; สตริงคงที่ส่วนตัว timepattern = "HH: MM"; ปฏิทินคงที่ส่วนตัว Cale = Calendar.getInstance (); สตริงสุดท้ายคงที่ ts_format = dateutil.getDatePattern () + "HH: MM: SS.S"; / ** รูปแบบวันที่ค่าคงที่สตริง yyyy-mm ค่าคงที่*/ สตริงคงสุดท้ายคงที่เดือนสุดท้าย month_format = "yyyy-mm"; / ** รูปแบบวันที่ค่าคงที่ yyyy-mm-dd ค่าคงที่*/ สตริงคงสุดท้ายคงที่วันที่ _format = "yyyy-mm-dd"; / ** รูปแบบวันที่ HH: MM: SS String constant*/ Private Static Final String hour_format = "HH: MM: SS"; / ** วันที่รูปแบบวันที่ yyyy-mm-dd hh: mm: SS สตริงคงที่*/ สตริงสุดท้ายคงที่ datetime_format = "yyyy-mm-dd hh: mm: ss"; / ** เริ่มต้นวัน, นาทีและค่าคงที่สตริงที่สอง 00:00:00*/ สตริงสุดท้ายคงที่วันสุดท้าย day_begin_string_hhmmss = "00:00:00"; / ** เริ่มต้นวัน, นาทีและสตริงที่สองคงที่ 23:59:59*/ สตริงสุดท้ายคงที่สาธารณะ day_end_string_hhmmss = "23:59:59"; private static simpledateFormat sdf_date_format = new SimpledateFormat (date_format); private static simpledateFormat sdf_hour_format = new SimpledateFormat (hour_format); private static simpledateFormat sdf_datetime_format = new SimpledateFormat (datetime_format); // ~ วิธีการ // ========================================================================================================== / ** * รับวันที่และเวลาปัจจุบันของเซิร์ฟเวอร์ส่งคืนในรูปแบบของสตริงวันที่ด้วยรูปแบบ: yyyy-mm-dd hh: mm: ss * @author dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงคงที่ } catch (exception e) {logger.debug ("dateutil.getDateTime ():" + e.getMessage ()); กลับ ""; }} / ** * รับวันที่ปัจจุบันของเซิร์ฟเวอร์ส่งคืนในรูปแบบของสตริงวันที่ด้วยรูปแบบ: yyyy-mm-dd * @author dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงคงที่สาธารณะ getdate () } catch (exception e) {logger.debug ("dateutil.getDate ():" + e.getMessage ()); กลับ ""; }} / ** * รับเวลาปัจจุบันของเซิร์ฟเวอร์ส่งคืนในรูปแบบของสตริงวันที่ด้วยรูปแบบ: HH: MM: SS * @author Dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงคงที่สาธารณะ getTime () {String temp = ""; ลอง {temp += sdf_hour_format.format (cale.getTime ()); กลับอุณหภูมิ; } catch (exception e) {logger.debug ("dateutil.getTime ():" + e.getMessage ()); กลับ ""; }} / ** * ค่าเริ่มต้นของวันที่เริ่มต้นระหว่างสถิติ * @author dylan_xu * @date มีนาคม 11, 2012 * @return * / สตริงคงที่สาธารณะ getStartDate () {ลอง {return getYear () + "-01-01"; } catch (exception e) {logger.debug ("dateutil.getStartDate ():" + e.getMessage ()); กลับ ""; }} / ** * ค่าเริ่มต้นของวันที่สิ้นสุดในระหว่างสถิติ * @author dylan_xu * @date มีนาคม 11, 2012 * @return * / สตริงคงที่สาธารณะ getEnddate () {ลอง {return getDate (); } catch (exception e) {logger.debug ("dateutil.getenddate ():" + e.getMessage ()); กลับ ""; }} / ** * รับปีที่วันที่ปัจจุบันของเซิร์ฟเวอร์ * @author dylan_xu * @date มีนาคม 11, 2012 * @return * / สตริงคงที่สาธารณะ getYear () {ลอง {return string.valueof (cale.get (calendar.year); } catch (exception e) {logger.debug ("dateutil.getyear ():" + e.getMessage ()); กลับ ""; }} / ** * รับเดือนของวันที่ปัจจุบันของเซิร์ฟเวอร์ * @author dylan_xu * @date มีนาคม 11, 2012 * @return * / สตริงคงที่สาธารณะ getMonth () {ลอง {java.text.decimalformat df = new Java.text.decimalformat (); df.applypattern ("00; 00"); return df.format ((cale.get (calendar.month) + 1)); } catch (exception e) {logger.debug ("dateutil.getMonth ():" + e.getMessage ()); กลับ ""; }} / ** * รับจำนวนวันในเดือนปัจจุบันของเซิร์ฟเวอร์ * @author dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงคงที่สาธารณะ getday () {ลอง {return string.valueof (cale.get (calendar.day_of_month)); } catch (exception e) {logger.debug ("dateutil.getday ():" + e.getMessage ()); กลับ ""; }} / ** * การเปรียบเทียบจำนวนวันระหว่างสองวัน * @author dylan_xu * @date มี.ค. 11, 2012 * @param วันที่ 1 * @param date2 * @return * / สาธารณะคงที่ int getMargin (สตริงวันที่ 1, สตริงวันที่ 2) ลอง {parseposition pos = parseposition ใหม่ (0); Parseposition pos1 = การแยกใหม่ (0); วันที่ dt1 = sdf_date_format.parse (วันที่ 1, pos); วันที่ dt2 = sdf_date_format.parse (date2, pos1); long l = dt1.getTime () - dt2.getTime (); margin = (int) (l / (24 * 60 * 60 * 1000)); อัตรากำไรขั้นต้นกลับ; } catch (exception e) {logger.debug ("dateutil.getMargin ():" + e.toString ()); กลับ 0; }} / ** * การเปรียบเทียบจำนวนวันที่ทั้งสองวันแตกต่างกัน * @author dylan_xu * @date มี.ค. 11, 2012 * @param วันที่ 1 * @param date2 * @return * / สาธารณะคงที่ double getDoublemArgin (สตริงวันที่ 1, สตริงวันที่ 2) ลอง {parseposition pos = parseposition ใหม่ (0); Parseposition pos1 = การแยกใหม่ (0); วันที่ dt1 = sdf_datetime_format.parse (วันที่ 1, pos); วันที่ dt2 = sdf_datetime_format.parse (date2, pos1); long l = dt1.getTime () - dt2.getTime (); margin = (l / (24 * 60 * 60 * 1000.00)); อัตรากำไรขั้นต้นกลับ; } catch (exception e) {logger.debug ("dateutil.getMargin ():" + e.toString ()); กลับ 0; }} / ** * การเปรียบเทียบจำนวนเดือนระหว่างสองวัน * @author dylan_xu * @date มี.ค. 11, 2012 * @param วันที่ 1 * @param date2 * @return * / สาธารณะ ลอง {margin = (integer.parseint (date2.substring (0, 4)) - integer.parseint (date1.substring (0, 4))) * 12; margin += (integer.parseint (date2.substring (4, 7) .replaceall ("-0", "-"))-integer.parseint (date1.substring (4, 7) .replaceall ("-0", "-")); อัตรากำไรขั้นต้นกลับ; } catch (exception e) {logger.debug ("dateutil.getMargin ():" + e.toString ()); กลับ 0; }} / ** * ส่งคืนวันที่หลังจากวันที่ x ของวันที่ * @author dylan_xu * @date มีนาคม 11, 2012 * @param วันที่ * @param i * @return * / สตริงคงที่สาธารณะ Integer.parseint (date.substring (5, 7)) - 1, Integer.parseint (date.substring (8, 10))); gcal.add (gregoriancalendar.date, i); ส่งคืน sdf_date_format.format (gcal.getTime ()); } catch (exception e) {logger.debug ("dateutil.addday ():" + e.toString ()); return getdate (); }} / ** * ส่งคืนวันที่หลังจากวันที่บวก x เดือน * @author dylan_xu * @date มี.ค. 11, 2012 * @param วันที่ * @param i * @return * / สตริงคงที่สาธารณะ Integer.parseint (date.substring (5, 7)) - 1, Integer.parseint (date.substring (8, 10))); gcal.add (gregoriancalendar.month, i); ส่งคืน sdf_date_format.format (gcal.getTime ()); } catch (exception e) {logger.debug ("dateutil.addmonth ():" + e.toString ()); return getdate (); }} / ** * ส่งคืนวันที่หลังจากวันที่บวก x ปี * @author dylan_xu * @date มี.ค. 11, 2012 * @param วันที่ * @param i * @return * / สตริงคงที่สาธารณะ Integer.parseint (date.substring (5, 7)) - 1, Integer.parseint (date.substring (8, 10))); gcal.add (gregoriancalendar.year, i); ส่งคืน sdf_date_format.format (gcal.getTime ()); } catch (exception e) {logger.debug ("dateutil.addyear ():" + e.toString ()); กลับ ""; }} / ** * ส่งคืนวันสูงสุดของเดือนที่แน่นอนในปีที่แน่นอน * @author dylan_xu * @date มีนาคม 11, 2012 * @param ปี * @param เดือน * @return * / สาธารณะคงที่ int getMaxday ลอง {ถ้า (imonth == 1 || image == 3 || image == 5 || image == 7 || image == 8 || image == 10 || image == 12) {day = 31; } อื่นถ้า (imonth == 4 || image == 6 || image == 9 || image == 11) {day = 30; } อื่นถ้า ((0 == (iYear % 4)) && (0! = (iYear % 100)) || (0 == (iYear % 400))) {วัน = 29; } else {day = 28; } วันกลับ; } catch (exception e) {logger.debug ("dateutil.getMonthday ():" + e.toString ()); กลับ 1; }} / ** * วันที่รูปแบบ * @author dylan_xu * @date มี.ค. 11, 2012 * @param orgdate * @param ประเภท * @param Span * @return * / @suppresswarnings ("Static-Access") สตริงสาธารณะ rolldate int iyear, image, iday; int ipos = 0; ถ่านแยก = '-'; if (orgdate == null || orgdate.length () <6) {return ""; } IPOS = orgdate.indexof (แยก); if (IPOS> 0) {iYear = Integer.ParseInt (orgdate.substring (0, IPOs)); temp = orgdate.substring (IPO + 1); } else {iyear = integer.parseint (orgdate.substring (0, 4)); temp = orgdate.substring (4); } IPOS = temp.indexof (แยก); if (iPos> 0) {image = integer.parseint (temp.substring (0, IPOS)); temp = temp.substring (IPOs + 1); } else {ipos = temp.indexof (แยก); if (iPos> 0) {image = integer.parseint (temp.substring (0, IPOS)); temp = temp.substring (IPOs + 1); } else {image = integer.parseint (temp.substring (0, 2)); temp = temp.substring (2); } ภาพ--; if (iMonth <0 || image> 11) {image = 0; } iday = integer.parseint (temp); ถ้า (วัน <1 || iday> 31) iday = 1; ปฏิทิน orgcale = calendar.getInstance (); orgcale.set (iyear, image, iday); temp = this.rolldate (orgcale, type, span); กลับอุณหภูมิ; } catch (exception e) {return ""; }} สตริงคงที่สาธารณะ rolldate (ปฏิทิน cal, ประเภท int, span int) {ลอง {String temp = ""; ปฏิทิน Rolcale; Rolcale = Cal; rolcale.add (type, span); temp = sdf_date_format.format (rolcale.getTime ()); กลับอุณหภูมิ; } catch (exception e) {return ""; }} / ** * ส่งคืนรูปแบบวันที่เริ่มต้น * @author dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงซิงโครไนซ์แบบคงที่สาธารณะ getDatePattern () {defaultDatePattern = "yyyy-mm-dd"; ส่งคืน defaultDatePattern; } / ** * แทนที่วันที่ที่ระบุลงในสตริงในรูปแบบเริ่มต้นและเอาต์พุตเช่น: yyyy-mm-dd * @author dylan_xu * @date มี.ค. 11, 2012 * @param adate * @return * / สตริงสุดท้ายคงที่ สตริง returnValue = ""; if (Adate! = null) {df = new SimpledateFormat (getDatePattern ()); returnValue = df.format (Adate); } return (returnValue); } / ** * รับสตริงเวลาสำหรับวันที่ที่กำหนดรูปแบบเป็นรูปแบบเวลาเริ่มต้นปัจจุบัน * @author dylan_xu * @date มีนาคม 11, 2012 * @param thetime * @return * / สตริงคงที่สาธารณะ getTimenow } / ** * รับวัตถุปฏิทินปฏิทินสำหรับเวลาปัจจุบัน * @author dylan_xu * @date มี.ค. 11, 2012 * @return * @throws parseexception * / ปฏิทินสาธารณะ getToday () โยน parseexception {วันที่วันนี้ = วันที่ใหม่ (); SimpledateFormat df = new SimpledateFormat (getDatePattern ()); สตริงวันนี้ string = df.format (วันนี้); ปฏิทิน Cal = New Gregoriancalendar (); Cal.Settime (ConvertStringTodate (TodayString)); กลับ Cal; } / ** * แปลงคลาสวันที่เป็นฟอร์มสตริงในรูปแบบที่ระบุ * @author dylan_xu * @date มี.ค. 11, 2012 * @param amask * @param adate * @return * / สตริงสุดท้ายคงที่ สตริง returnValue = ""; if (Adate == null) {logger.error ("Adate is Null!"); } else {df = new SimpledateFormat (amask); returnValue = df.format (Adate); } return (returnValue); } / ** * แปลงวันที่ที่ระบุเป็นฟอร์มสตริงในรูปแบบเริ่มต้น * @author dylan_xu * @date มี.ค. 11, 2012 * @param adate * @return * / สตริงสุดท้ายคงที่ convertDatetOstring (วันที่ adate) } / ** * แปลงสตริงวันที่เป็นประเภทวันที่ในรูปแบบที่ระบุ * @author dylan_xu * @date มี.ค. 11, 2012 * @param amask รูปแบบวันที่ที่ระบุเช่น: yyyy-mm-dd * @param strdate สตริงวันที่ Parseexception {SimpledateFormat df = null; วันที่วันที่ = null; df = ใหม่ simpledateFormat (amask); if (logger.isdebugenabled ()) {logger.debug ("แปลง '" + strdate + "' ถึงวันที่ด้วยหน้ากาก '" + amask + "'"); } ลอง {date = df.parse (strdate); } catch (parseexception pe) {logger.error ("parseexception:" + pe); โยน PE; } return (วันที่); } / ** * แปลงสตริงวันที่เป็นวันที่วันที่ในรูปแบบเริ่มต้น * @author dylan_xu * @date มี.ค. 11, 2012 * @param strdate * @return * @throws parseexception * / วันที่สาธารณะคงที่ convertstringTodate ลอง {ถ้า (logger.isdebugenabled ()) {logger.debug ("การแปลงวันที่ด้วยรูปแบบ:" + getDatePattern ()); } adate = convertStringTodate (getDatePattern (), strdate); } catch (parseexception pe) {logger.error ("ไม่สามารถแปลง '" + strdate + "' เป็นวันที่โยนข้อยกเว้น"); โยน parseexception ใหม่ (pe.getMessage (), pe.geterRoffset ()); } return Adate; } / ** * ส่งคืนสตริงวันที่ของ java ง่ายประเภท * @author dylan_xu * @date มี.ค. 11, 2012 * @return * / สตริงคงที่สาธารณะ getSimpledateFormat () {simpledateFormat formatter = new SimpleDateFormat (); สตริง ndatetime = formatter.format (วันที่ใหม่ ()); กลับ ndatetime; }/** * การเปรียบเทียบวันที่ในรูปแบบสตริงที่ระบุกับเวลาปัจจุบัน * @author dylan * @date ก.พ. 17, 2012 * @param strdate เวลาที่ต้องใช้ในการเปรียบเทียบ * @return * <p> * int code * <ul> * <li> -1 เวลาปัจจุบัน <เปรียบเทียบเวลา </ul> * </p> */public static int comperetocurtime (String strdate) {ถ้า (stringutils.isblank (strdate)) {return -1; } date curtime = cale.getTime (); String strcurtime = null; ลอง {strcurtime = sdf_datetime_format.format (curtime); } catch (exception e) {ถ้า (logger.isdebugenabled ()) {logger.debug ("[ไม่สามารถจัดรูปแบบ '" + strdate + "' ถึงวันที่การขว้างข้อยกเว้น:" + e.getLocalizedMessage () + "]"); }} if (stringutils.isnotblank (strcurtime)) {return strcurtime.compareto (strdate); } return -1; } / ** * เพิ่มเวลาขั้นต่ำไปยังวันที่สอบถาม * * @param ประเภทเป้าหมายวันที่ * @param พารามิเตอร์การแปลงวันที่ * @return * / @suppresswarnings ("deprecation") วันที่สาธารณะคงที่ ลอง {date.sethours (0); date.setMinutes (0); Date.setSeconds (0); วันที่ส่งคืน; } catch (Exception Ex) {วันที่ส่งคืน; }} / ** * เพิ่มเวลาสูงสุดในการสอบถามวันที่ * * @param ประเภทเป้าหมายวันที่ * @param พารามิเตอร์การแปลงวันที่ * @return * / @suppresswarnings ("การเสื่อมสภาพ") วันที่สาธารณะคงที่ ลอง {date.sethours (23); date.setMinutes (59); Date.setSeconds (0); วันที่ส่งคืน; } catch (Exception Ex) {วันที่ส่งคืน; }} / *** ส่งคืนจำนวนวันในปีปัจจุบันของระบบ** @param เดือน* @return วันทั้งหมดในเดือนที่ระบุ* / @suppresswarnings ("การเสื่อมสภาพ") สตริงคงที่สาธารณะ getMonthlastday (เดือน int) {วันที่ = วันที่ใหม่ (); int [] [] day = {{0, 30, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 30, 31, 30, 31}}; int year = date.geteyear () + 1900; ถ้า (ปี % 4 == 0 && ปี % 100! = 0 || ปี % 400 == 0) {วันกลับ [1] [เดือน] + ""; } else {ส่งคืนวัน [0] [เดือน] + ""; }} / ** * ส่งคืนจำนวนวันในเดือนที่กำหนดในปีที่กำหนด * * @param ปีปี * @param เดือนเดือน * @กลับมารวมวันทั้งหมดในเดือนที่กำหนด * / สตริงคงที่สาธารณะ getMonthlastday (int ปี, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31, 30, 31}}; ถ้า (ปี % 4 == 0 && ปี % 100! = 0 || ปี % 400 == 0) {วันกลับ [1] [เดือน] + ""; } else {ส่งคืนวัน [0] [เดือน] + ""; }} / ** * ตัดสินว่าเป็นปีปกติหรือปีกระโดด * @author dylan_xu * @date มี.ค. 11, 2012 * @param ปี * @return * / public boolean isleapyear สาธารณะ (ปี int) {ถ้า (ปี 4 == 0 && ปี 100! = 0) | | } else {return false; }} / ** * รับตราประทับวันของเวลาปัจจุบัน * @author dylan_xu * @date มีนาคม 11, 2012 * @return * / @suppresswarnings ("การเสื่อมราคา") สตริงคงที่สาธารณะ getTimestamp () {วันที่ = Cale.getTime (); String timestamp = "" + (date.getYear () + 1900) + date.getMonth () + date.getDate () + date.getMinutes () + date.getSeconds () + date.getTime (); ส่งคืนเวลา; } / ** * รับการประทับตราวันของเวลาที่ระบุ * * @return * / @suppresswarnings ("deprecation") สตริงคงที่สาธารณะ getTimestamp (วันที่) {สตริง timestamp = "" + (วันที่. ส่งคืนเวลา; } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {system.out.println (getYear () + "|" + getMonth () + "|" + getDate ()); -ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับการเรียนรู้ของทุกคน