ในการพัฒนาโครงการวันที่เป็นส่วนที่ขาดไม่ได้ของเรา บทความนี้จะสรุปวิธีการทั่วไปบางอย่างเกี่ยวกับวันที่ในการพัฒนารหัสเพื่ออำนวยความสะดวกในการใช้งานในภายหลังของคุณ อาหารเสิร์ฟโดยตรงด้านล่าง:
แพ็คเกจ com.example.util; นำเข้า java.text.parseException; นำเข้า java.text.simpledateFormat; นำเข้า java.util.arraylist; นำเข้า Java.util.Calendar; นำเข้า java.util.date; นำเข้า java.util.list; / *** วิธีวันที่ทั่วไป** @author**/ คลาสสาธารณะวันที่ {/ *** ตัวแปรทั่วไป*/ สาธารณะคงที่สตริงสุดท้ายคงที่ date_format_full = "yyyy-mm-dd hh: mm: ss"; สตริงสุดท้ายคงที่สาธารณะ date_format_ymd = "yyyy-mm-dd"; สตริงสุดท้ายคงที่สาธารณะ date_format_hms = "HH: MM: SS"; สตริงสุดท้ายคงที่สาธารณะ date_format_hm = "HH: MM"; สตริงสุดท้ายคงที่สาธารณะ date_format_ymdhm = "yyyy-mm-dd hh: mm"; สตริงสุดท้ายคงที่สาธารณะ date_format_ymdhms = "yyyymmddhhmmss"; สาธารณะคงที่สุดท้ายยาว one_day_mills = 3600000 * 24; สาธารณะคงที่สุดท้าย int Week_days = 7; ส่วนตัวคงที่ int datelength = date_format_ymdhm.length (); / ** * แปลงวันที่เป็นรูปแบบสตริง * * เวลา @param * @param format * @return */ public String String FormatDateToString (เวลาวันที่, รูปแบบสตริง) {SimpledateFormat SDF = ใหม่ SimpleDateFormat (รูปแบบ); ส่งคืน sdf.format (เวลา); } / ** * แปลงสตริงเป็นวันที่รูปแบบ * (หมายเหตุ: เมื่อวันที่ที่คุณป้อนคือ 2014-12-21 12:12 รูปแบบที่สอดคล้องกันควรเป็น yyyy-mm-dd hh: mm * มิฉะนั้นข้อยกเว้นจะถูกโยนลง) * วันที่ @param SDF = ใหม่ SimpleDateFormat (รูปแบบ); ลอง {return sdf.parse (วันที่); } catch (parseexception ex) {ex.printstacktrace (); โยน runtimeException ใหม่ (ex.toString ()); }} / ** * ตรวจสอบว่าวันที่เป็นของสองช่วงเวลา * เวลา @param * @param timerange * @return * / บูลีนคงที่สาธารณะ istimeInrange (เวลาวันที่, วันที่ [] การจับเวลา) {return (time.before (timerange [0]) &&! } / ** * เวลาจากเวลาที่สมบูรณ์ไปจนถึงนาที * * @param fulldatestr * @return * / สตริงคงที่สาธารณะ getDateTominute (String fulldatestr) {return fulldatestr == null? null: (fulldatestr.length ()> = datelength? fulldatestr.substring (0, datelength): fulldatestr); } /*** ส่งคืนทุกสัปดาห์ของปีที่กำหนด รายการมีสตริง [2] สตริงวัตถุ [0] วันที่เริ่มต้นของสัปดาห์และสตริง [1] คือวันที่สิ้นสุดของสัปดาห์ * วันที่อยู่ในรูปแบบของ YYYY-MM-DD ในสัปดาห์แรกของแต่ละปีจะต้องรวมวันจันทร์และเป็นเจ็ดวันที่สมบูรณ์ * ตัวอย่าง: สัปดาห์แรกของปี 2009 เริ่มต้นที่ 2009-01-05 และสิ้นสุดที่ 2009-01-11 ปีไหนวันจันทร์? แล้วสัปดาห์นี้จะรวมอยู่ในสัปดาห์นี้? * ตัวอย่างเช่น: 2008-12-29 คือวันจันทร์, 2009-01-04 เป็นวันอาทิตย์ดังนั้นสัปดาห์นี้เป็นสัปดาห์สุดท้ายของปี 2008 * * @param ปี * รูปแบบ yyyy ต้องมากกว่า 1900 และน้อยกว่า 9999 * @return @ */ รายการคงที่ รายการ <string []> result = new ArrayList <string []> (สัปดาห์); int start = 1; int end = 7; สำหรับ (int i = 1; i <= สัปดาห์; i ++) {string [] tempweek = ใหม่สตริง [2]; tempweek [0] = getDateFordayOfWeek (ปี, ฉันเริ่มต้น); tempweek [1] = getDateFordayOfWeek (ปี, i, end); result.add (tempweek); } ผลตอบแทนผลลัพธ์; } / ** * คำนวณปีและสัปดาห์ที่ผ่านมาของปีและสัปดาห์ที่กำหนด * * @param ปี * @param สัปดาห์ * @return @ * / สาธารณะคงที่ int [] getLastyearweek (int ปี, สัปดาห์ int) {ถ้า (สัปดาห์ <= 0) } int [] result = {สัปดาห์, ปี}; ถ้า (สัปดาห์ == 1) {// ผลปีก่อน [1] -= 1; // ผลลัพธ์เมื่อสัปดาห์ที่แล้ว [0] = getweeknumofyear (ผลลัพธ์ [1]); } else {ผลลัพธ์ [0] -= 1; } ผลตอบแทนผลลัพธ์; } / ** * ถัดไป [สัปดาห์, ปี] * * @param ปี * @param Week * @return @ * / สาธารณะคงที่ int [] getnextyearweek (ปี int, int สัปดาห์) {ถ้า (สัปดาห์ <= 0) } int [] result = {สัปดาห์, ปี}; int สัปดาห์ = getweeknumofyear (ปี); ถ้า (สัปดาห์ == สัปดาห์) {// ผลปีหน้า [1] += 1; // ผลสัปดาห์แรก [0] = 1; } else {ผลลัพธ์ [0] += 1; } ผลตอบแทนผลลัพธ์; } /*** คำนวณจำนวนสัปดาห์ในปีที่กำหนด (เริ่มในวันจันทร์) * * @param ปี * @return @ */ สาธารณะคงที่ int getweeknumofyear (ปีสุดท้าย) {กลับ getweeknumofyear (ปี, ปฏิทินวันจันทร์); } /*** คำนวณจำนวนสัปดาห์ในปีที่กำหนด * * @param ปี * yyyy * @return @ */ สาธารณะคงที่ int getweeknumofyear (ปีสุดท้าย int, int firstdayofweek) {// มีอย่างน้อย 52 สัปดาห์ในแต่ละปีและสูงสุด 53 สัปดาห์ int minweeks = 52; int maxweeks = 53; int result = minweeks; int sindex = 4; สตริงวันที่ = getDateForDayOfWeek (ปี, MaxWeeks, FirstDayOfWeek); // เพื่อตรวจสอบว่าการจับคู่ปีหรือไม่หากตรงกับนั้นหมายความว่ามี 53 สัปดาห์ if (date.substring (0, sindex) .equals (ปี)) {result = maxWeeks; } ผลตอบแทนผลลัพธ์; } สาธารณะคงที่ int getWeeKEKEKEKEKEAREAR (ปีสุดท้าย) {ปฏิทิน CAL = CALENDAR.GETINSTANCE (); Cal.SetFirstDayOfWeek (Calendar.Monday); Cal.SetMinimaldaysInfirstweek (Week_days); Cal.Set (Calendar.year, ปี); ส่งคืน Cal.getWeekSinweekyear (); } / ** * รับวันที่สอดคล้องกับวันของสัปดาห์ที่กำหนด yyyy-mm-dd (เริ่มต้นจากวันจันทร์) * * @param ปี * @param สัปดาห์แรก * @param dayofweek * @return yyyy-mm-dd วันที่ @ * / public Static String สัปดาห์ปี, dayofweek, calendar.monday); } /** * รับวันที่สอดคล้องกับวันของสัปดาห์ของปีที่กำหนด yyyy-mm-dd และระบุวันของสัปดาห์เพื่อคำนวณวันแรกของสัปดาห์ (firstdayofweek) * * @param ปี * @param สัปดาห์ที่ผ่านมา รูปแบบ */ สตริงคงที่สาธารณะ getDateForDayOfWeek (ปี int, int สัปดาห์เยาว์, int dayOfweek, int firstdayOfWeek) {ปฏิทิน cal = calendar.getInstance (); Cal.SetFirstDayOfWeek (FirstDayOfWeek); Cal.Set (Calendar.day_of_week, Dayofweek); Cal.SetMinimaldaysInfirstweek (Week_days); Cal.Set (Calendar.year, ปี); Cal.Set (Calendar.week_of_year, Weekofyear); Return FormatDatetOstring (cal.getTime (), date_format_ymd); } / ** * รับวันที่ที่ระบุของสัปดาห์ * * @param dateTime * @throws parseexception * @ * / สาธารณะคงที่ int getweekofdate (สตริง dateTime) พุ่ง parseexception {ปฏิทิน cal = calendar.getInstance (); Cal.SetFirstDayOfWeek (Calendar.Monday); Cal.SetMinimaldaysInfirstweek (Week_days); วันที่วันที่ = formatStringTodate (DateTime, date_format_ymd); Cal.Settime (วันที่); ส่งคืน cal.get (calendar.day_of_week); } / ** * คำนวณวันที่ทั้งหมดในหนึ่งสัปดาห์ของปีที่แน่นอน (ตั้งแต่วันจันทร์ถึงวันแรกของสัปดาห์) * * @param wernum * @param Weeknum * @return @ * / รายการคงที่สาธารณะ <String> getWeekDays } / ** * คำนวณวันที่ทั้งหมดในหนึ่งสัปดาห์ของปีที่แน่นอน (เจ็ดวัน) * * @param yearnum * @param Weeknum * @return yyyy-mm-dd รูปแบบรายการวันที่ * / รายการคงที่สาธารณะ <String> getWeekDays int dayofweek = firstdayofweek; สำหรับ (int i = 0; i <week_days; i ++) {dates.add (getDateFordayOfweek (ปี, สัปดาห์ปี, dayofweek ++, firstdayofweek)); } วันที่ส่งคืน; } / ** * รับข้อมูลปีและสัปดาห์ของวันที่เป้าหมายสำหรับสัปดาห์ก่อนหน้าสัปดาห์นี้หรือสัปดาห์หน้า * * @param querydate * เวลาที่เข้ามา * @param WeekOffset * -1: สัปดาห์ที่แล้ว 0: สัปดาห์นี้ 1: สัปดาห์หน้า WeekOffset, int firstdayofweek) พ่น parseexception {วันที่ = formatStringTodate (queryDate, date_format_ymd); ปฏิทินปฏิทิน = ปฏิทิน GetInstance (); Calendar.Settime (วันที่); Calendar.SetFirstDayOfWeek (FirstDayOfWeek); Calendar.setMinimaldaysInfirstweek (Week_days); int year = calendar.getWeekyear (); int สัปดาห์ = calendar.get (calendar.week_of_year); int [] result = {สัปดาห์, ปี}; Switch (WeekOffset) {กรณีที่ 1: result = getNexTyeArweek (ปี, สัปดาห์); หยุดพัก; กรณี -1: ผลลัพธ์ = getLastyearweek (ปี, สัปดาห์); หยุดพัก; ค่าเริ่มต้น: break; } ผลตอบแทนผลลัพธ์; } / ** * คำนวณจำนวนวันเป็นเวลาสองวัน * * @param startdate * สตริงวันที่เริ่มต้น * @param enddate * string วันที่สิ้นสุด * @return * @throws parseexception * / public Static int getDaysBetween if (startDate! = null && startDate.length ()> 0 && enddate! = null && enddate.length ()> 0) {วันที่สิ้นสุด = formatStringTodate (enddate, date_format_ymd); วันที่เริ่มต้น = formatStringTodate (startDate, date_format_ymd); daygap = getDaysBetween (เริ่มต้นจบ); } return daygap; } ส่วนตัวคงที่ int getDaysBetween (วันที่เริ่มต้นวันที่สิ้นสุดวันที่) {return (int) ((enddate.getTime () - startDate.getTime ()) /one_day_mills); } / ** * คำนวณความแตกต่างในจำนวนวันระหว่างสองวัน * @param startdate * @param enddate * @return * / สาธารณะคงที่ int getDaySgapofdates (วันที่เริ่มต้นวันที่สิ้นสุดวันที่) {int date = 0; if (startdate! = null && enddate! = null) {date = getDaysBetween (startDate, enddate); } วันที่ส่งคืน; } / ** * คำนวณช่องว่างปีระหว่างสองวัน * * @param FirstDate * @Param SecondDate * @return * / สาธารณะคงที่ int getYeArgapofdates (วันที่แรกวันที่สองวันที่สอง) {ถ้า (FIRSTDATE == NULL || secondDate == null) {return 0; } Calendar HelpCalendar = Calendar.getInstance (); HelpCalendar.Settime (FirstDate); int firstyear = helpcalendar.get (calendar.year); HelpCalendar.Settime (วันที่สอง); int secondyear = helpcalendar.get (calendar.year); กลับมาปีที่สอง - Firstyear; } / ** * คำนวณช่องว่างเดือนระหว่างสองวันที่ * * @param FirstDate * @param SecondDate * @return * / สาธารณะคงที่ int getMonthGapofdates (วันที่แรกวันที่สองวันที่สอง) {ถ้า (FIRSTDATE == NULL || secondDate == null) {return 0; } return (int) ((secondDate.getTime () - FirstDate.getTime ()) / one_day_mills / 30); } / ** * คำนวณว่าวันที่ปัจจุบันรวมอยู่ * * @param datys * @return * / public Static Boolean iScontainCurrent (รายการ <String> วันที่) {Boolean Flag = False; SimpledateFormat fmt = new SimpledateFormat (date_format_ymd); วันที่วันที่ = วันที่ใหม่ (); String datestr = fmt.format (วันที่); สำหรับ (int i = 0; i <date.size (); i ++) {ถ้า (datestr.equals (date.get (i))) {flag = true; }} return flag; } / ** * คำนวณวันที่ของเวลาราชินีจากวันที่ * * @param วันที่ * @param เวลา * @return * @throws parseexception * / สตริงคงที่สาธารณะ getCalculatedAtetOstring if (startDate! = null && startDate.Length ()> 0) {วันที่ = date = formatStringTodate (startDate, date_format_ymd); ปฏิทิน C = Calendar.getInstance (); C.Settime (วันที่); c.set (calendar.day_of_year, เวลา); วันที่ = c.getTime (); resultDate = formatDateToString (วันที่, date_format_ymd); } return resultDate; } / ** * รับสัปดาห์ของปีที่วันที่ที่ระบุคำนวณจากวันที่หนึ่ง * * @param วันที่ * @param AdmitDate * @return * @throws Parseexception * @ * / สาธารณะคงที่ int [] getYearandweeks C.Settime (FormatStringTodate (AdmitDate, date_format_ymd)); เวลา int = c.get (calendar.day_of_week); กลับ getWeekandyear (วันที่, 0, เวลา); } / ** * รับวันที่ที่ระบุ refdate วันที่ทั้งหมดของสัปดาห์ก่อนหรือหลัง * @param refdate * วันที่อ้างอิง * @param WeekOffset * -1: สัปดาห์ที่แล้ว 0: สัปดาห์นี้ 1: สัปดาห์หน้า * @param startdate * วันใด refdate, int weekOffset, String startdate) พ่น parseexception {// startdate เป็นวันแรกของปฏิทินสัปดาห์ c = calendar.getInstance (); C.Settime (FormatStringTodate (startDate, date_format_ymd)); int firstdayofweek = c.get (calendar.day_of_week); // รับสัปดาห์ที่สอดคล้องกัน int [] WeekAndyear = getWeekAndyear (refdate, WeekOffset, FirstDayOfweek); // รับวันที่ทั้งหมดของสัปดาห์ที่สอดคล้องกันคืนวันที่ GetWeekDays (WeekAndyear [1], WeekAndyear [0], FirstDayOfweek); } / ** * รับช่วงเวลาตามจุดเวลา * * @param ชั่วโมง * @return * / รายการคงที่สาธารณะ <String []> getTimePointSbyHour (int [] ชั่วโมง) {list <String []> hourpoints = new ArrayList <String []> (); สตริง sbstart = ": 00: 00"; String sbend = ": 59: 59"; สำหรับ (int i = 0; i <hours.length; i ++) {string [] times = สตริงใหม่ [2]; ครั้ง [0] = ชั่วโมง [i] + sbstart; ครั้ง [1] = (ชั่วโมง [(i + 1 + ชั่วโมงความยาว) % ชั่วโมงความยาว] - 1) + sbend; hourpoints.add (คูณ); } return hourpoints; } / ** * เพิ่มหรือลดจำนวนวันตามวันที่ที่ระบุ * * @param วันที่ * @param จำนวนเงิน * @return * / วันที่สาธารณะคงที่ adddays (วันที่วันที่, จำนวน int) {return add (วันที่, calendar.day_of_month, จำนวน); } / ** * เพิ่มหรือลดจำนวนตามวันที่ที่ระบุพิมพ์ * * @param วันที่ * @param calendarfield * @param จำนวนเงิน * @return * / วันที่คงที่สาธารณะเพิ่ม (วันที่วันที่, int calendarfield, จำนวน int) {ถ้า (วันที่ == null) } ปฏิทิน c = calendar.getInstance (); C.Settime (วันที่); c.add (ปฏิทินจำนวน); กลับ c.getTime (); } / ** * รับเวลาวันที่สูงสุดของวันที่ปัจจุบัน 2014-12-21 23:59:59 * @return * / วันที่สาธารณะคงที่ getCurdAteWithMaxtime () {ปฏิทิน C = Calendar.getInstance (); c.set (calendar.hour_of_day, 23); C.Set (Calendar.Minute, 59); c.set (ปฏิทิน. วินาที, 59); กลับ c.getTime (); } / ** * รับเวลาวันที่ขั้นต่ำของวันที่ปัจจุบัน 2014-12-21 00:00:00 * @return * / วันที่สาธารณะคงที่ getCurdAteWithMintime () {ปฏิทิน C = Calendar.getInstance (); c.set (calendar.hour_of_day, 0); c.set (calendar.minute, 0); c.set (ปฏิทิน. วินาที, 0); C.Set (Calendar.millisecond, 0); กลับ c.getTime (); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น