ตราบใดที่รูปแบบถูกต้องเพียงแค่เปรียบเทียบสตริงโดยตรงเช่นเดียวกันจะเป็นจริงเป็นเวลาไม่กี่วินาที
String S1 = "2003-12-12 11:30:24"; String S2 = "2004-04-01 13:31:40"; int res = s1.compareto (S2);
ค้นหาความแตกต่างของวันที่
SimpledateFormat df = new SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); วันที่เริ่มต้น = df.parse ("2004-01-02 11:30:24"); วันที่สิ้นสุด = df.parse ("2004-03-26 13:31:40"); ยาวระหว่าง = (end.getTime ()-เริ่มต้น. getTime ())/1000; // หารด้วย 1,000 คือการแปลงเป็นวินาที int วัน = ระหว่าง/(24*3600); int ชั่วโมง = ระหว่าง%(24*3600)/3600; int นาที = ระหว่าง%3600/60; int second = ระหว่าง%60; มักจะใช้คลาสและวันที่ดังนั้นวิธีการและแอตทริบิวต์ที่ใช้กันทั่วไปจึงถูกสรุปไว้ดังนี้เพื่ออำนวยความสะดวกให้ทุกคนค้นหาได้
1. คำนวณจำนวนวันสูงสุดในเดือนที่กำหนด
เวลาปฏิทิน = Calendar.getInstance (); time.clear (); time.set (Calendar.year, ปี); time.set (calendar.month, i-1); // โปรดทราบว่าวัตถุปฏิทินเริ่มต้นเป็นวันที่ 0 มกราคม int วัน = time.getActualMaximum (calendar.day_of_month); // จำนวนวันในเดือนนี้
หมายเหตุ: ก่อนที่จะใช้วิธีการตั้งค่าจะเป็นการดีที่สุดที่จะล้างมันก่อนมิฉะนั้นข้อมูลจำนวนมากจะได้รับการสืบทอดจากเวลาระบบปัจจุบัน
2. การแปลงปฏิทินและวันที่
(1) ปฏิทินแปลงเป็นวันที่
ปฏิทิน cal = calendar.getInstance (); วันที่วันที่ = cal.getTime ();
(2) แปลงวันที่เป็นปฏิทิน
วันที่วันที่ = วันที่ใหม่ (); ปฏิทิน cal = calendar.getInstance (); Cal.Settime (วันที่);
3. จัดรูปแบบวันที่และเวลาที่ส่งออก
วันที่วันที่ = วันที่ใหม่ (); SimpledateFormat df = new SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); System.out.println (df.format (วันที่)); 4. คำนวณสัปดาห์ของปี
(1) คำนวณสัปดาห์ของปีต่อวัน
ปฏิทิน cal = calendar.getInstance (); Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.month, 9); Cal.Set (Calendar.day_of_month, 3); int WeekNo = Cal.Get (Calendar.week_of_year);
(2) คำนวณสัปดาห์ของปี
SimpledateFormat df = new SimpledateFormat ("yyyy-mm-dd"); ปฏิทิน cal = calendar.getInstance (); Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.week_of_year, 1); Cal.Set (Calendar.day_of_week, Calendar.monday); System.out.println (df.format (cal.getTime ()));เอาท์พุท:
2006-01-02
5. การใช้ Add () และม้วน ()
(1) เพิ่ม () วิธีการ
SimpledateFormat df = new SimpledateFormat ("yyyy-mm-dd"); ปฏิทิน cal = calendar.getInstance (); Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.month, 9); Cal.Set (Calendar.day_of_month, 3); Cal.Add (Calendar.date, -4); วันที่วันที่ = cal.getTime (); System.out.println (df.format (วันที่)); Cal.Add (Calendar.date, 4); วันที่ = cal.getTime (); System.out.println (df.format (วันที่)); เอาท์พุท:
2006-08-30
2549-10-03
(2) วิธีการม้วน
Cal.Set (Calendar.year, 2006); Cal.Set (Calendar.month, 9); Cal.Set (Calendar.day_of_month, 3); Cal.Roll (Calendar.date, -4); วันที่ = cal.getTime (); System.out.println (df.format (วันที่)); Cal.Roll (Calendar.date, 4); วันที่ = cal.getTime (); System.out.println (df.format (วันที่));
เอาท์พุท:
2549-10-29
2549-10-03
จะเห็นได้ว่าวิธีการม้วน () ลูปภายในเดือนนี้และใช้วิธีการเพิ่ม () โดยทั่วไป;
6. คำนวณจำนวนวันระหว่างสองครั้งโดยพลการ
(1) ผ่านไปยังวัตถุปฏิทิน
/*** // ** คำนวณจำนวนวันระหว่างสองครั้ง* @param เริ่มต้นเวลาเริ่มต้น* @param เวลาสิ้นสุดวันสุดท้าย* @return*/public int getIntervaldays (ปฏิทิน startday, ปฏิทิน endday) .. {// ตรวจสอบให้แน่ใจ สองเท่าตามลำดับ SL = startDay.getTimeInmillis (); Long El = endday.gettimeinmillis (); Long Ei = El-Sl; // คำนวณวันช่วงเวลาตามการส่งคืนมิลลิวินาที (int) (ei/(1,000*60*60*24));}(2) ส่งผ่านไปยังวัตถุวันที่
/*** // ** คำนวณจำนวนวันระหว่างสองครั้ง* @param startday เวลาเริ่มต้น* @param endday end time* @return*/public int getintervaldays (วันที่เริ่มต้นวันวันที่ endday) ... {// ตรวจสอบให้แน่ใจว่าเริ่มต้นวันใหม่ SL = startDay.getTime (); Long El = endday.getTime (); Long Ei = El-Sl; // คำนวณวันช่วงเวลาตามการส่งคืนมิลลิวินาที (int) (ei/(1,000*60*60*24));}ในทำนองเดียวกันคุณสามารถใช้วิธีเดียวกันในการคำนวณจำนวนชั่วโมงนาทีวินาที ฯลฯ หมายเหตุ: วิธีการด้านบนถูกคำนวณอย่างสมบูรณ์ตามเวลาและบางครั้งก็ไม่น่าพอใจเช่น:
StartDay = "2006-10-11 20:00:00" Endday = "2006-10-12 8:00:00"
ผลการคำนวณคือ 0 แต่เราอาจทำให้ผลการคำนวณกลายเป็น 1 ในเวลานี้เราสามารถใช้วิธีการต่อไปนี้:
ก่อนที่จะผ่านการโต้แย้งให้ตั้งเวลา endday ก่อนเช่น:
endday.set (calendar.hour_of_day, 23); endday.set (Calendar.minute, 59); endday.set (Calendar.second, 59); endday.set (Calendar.millisecond, 59);
หากคุณผ่านมันผลลัพธ์จะเป็นไปตามที่เราต้องการ อย่างไรก็ตามหากคุณพบวิธีการที่เป็นปัญหาข้างต้นคุณสามารถอ้างถึงวิธีการต่อไปนี้:
(3) ปรับปรุงวิธีการคำนวณจำนวนวันอย่างแม่นยำ
สาธารณะ int getDaysBetween (ปฏิทิน D1, ปฏิทิน d2) ... {ถ้า (d1.after (d2)) ... {// วันที่สลับเพื่อให้ D1 เริ่มต้นและ d2 สิ้นสุด java.util.calendar swap = d1; d1 = d2; d2 = swap; d1.get (calendar.day_of_year); int y2 = d2.get (ปฏิทิน. ปี); ถ้า (d1.get (ปฏิทิน. ปี)! = y2) ... {d1 = (ปฏิทิน) d1.clone () d1.add (Calendar.year, 1);} ในขณะที่ (d1.get (calendar.year)! = y2);} คืนวัน;}รับเวลาระบบปัจจุบัน:
สตริงคงที่สาธารณะ getSystemTime () {วันที่ = วันที่ใหม่ (); simpledateFormat df = new SimpledateFormat ("yyyy-mm-dd hh: mm: ss"); return df.format (วันที่);} // แปลงสตริงเป็นประเภทเวลา ใหม่ java.text.simpledateFormat ("m/dd/yyyy hh: mm: ss a", java.util.locale.us); java.util.date d = sdf.parse ("5/13/2003 10:31:37 am" HH: MM: SS "); String MDATETIME1 = Formatter.Format (D); // ปฏิทิน cal = Calendar.getInstance (); // simpledateFormat formatter = new SimpleDateFormat (" yyyy-mm-dd hh: mm: ss "); SimpledateFormat Formatter = New SimpledateFormat ("yyyy-mm-dd hh: mm: ss gedf w w a ef"); สตริง mdatetime = formatter.format (cal.gettime ()); Long MyTime = (myDate.getTime ()/1000) -60*60*24*365; myDate.Settime (MyTime*1000); String mdate = formatter.format (myDate); // วันพรุ่งนี้วันที่ myDate = ใหม่ java.util.date (); mytime = (mydate.getTime ()/1000)+60*60*24; mydate.settime (MyTime*1000); mdate = formatter.format (myDate); // จำนวนวันระหว่างสองครั้ง myformatter.parse ("2003-05-1"); java.util.date mydate = myformatter.parse ("1899-12-30"); Long Day = (date.time ()-mydate.time ()/(24*60*60*1000); HH: MM: SS "); java.util.date วันที่ 1 = format.parse (" 2002-02-28 23:16:00 "); Long Time = (date1.getTime ()/1000)+60*30; วันที่ 1.Settime (เวลา*1000); String mydate1 = formatter.format (วันที่ 1); // ปี, เดือน, สัปดาห์, วันที่ simpledateFormat formatter2 = new SimpledateFormat ("yyyy-mm fe"); วันศุกร์ "); simpledateFormat formatter3 = new SimpledateFormat (" yyyy-mm-dd "); String mydate2 = format3.format (date2); // ค้นหาวันของสัปดาห์ mydate = myformatter.parse (" 2001-1-1 "); formatternatatter (string;ในการพัฒนาเว็บแอปพลิเคชันเราจำเป็นต้องทำการแปลงที่แตกต่างกันไปจนถึงประเภทวันที่ในโปรแกรมของเราสำหรับประเภทวันที่ฐานข้อมูลที่แตกต่างกัน หากข้อมูลฐานข้อมูลที่เกี่ยวข้องเป็นประเภทวันที่ของ Oracle นั่นคือเฉพาะปีและวันที่จำเป็นคุณสามารถเลือกใช้ประเภท Java.sql.date หากข้อมูลฐานข้อมูลที่สอดคล้องกันเป็นประเภท dateTime ของฐานข้อมูล MSSQLServer นั่นคือปี, เดือน, วัน, ชั่วโมง, นาทีและที่สองเป็นสิ่งจำเป็นให้เลือกประเภท java.sql.timestamp
คุณสามารถใช้ DateFormat เพื่อกำหนดรูปแบบเวลาและวันที่และเปลี่ยนเป็นสตริง
แพ็คเกจส่วนบุคคลเจสสิก้า; นำเข้า java.util.date; นำเข้า java.util.calendar; นำเข้า java.sql.timestamp; นำเข้า java.text.dateformat; นำเข้า java.text.simpledateformat; นำเข้า java.util.locale; java.sql.timestamp) *@param datestring String ที่ต้องแปลงเป็น timestamp *@return datatime timestamp */สาธารณะสุดท้ายคงที่ java.sql.timestamp สตริง string2time KK: MM: ss.sss ", locale.english); // set format // dateformat = new SimpledateFormat (" yyyy-mm-dd kk: mm: ss ", locale.english); dateformat.setLenient (false); java.util.date timedate = dateformat.parse (datestring); // util type java.sql.timestamp datetime = new java.sql.timestamp ของประเภทสตริงถึงวันที่ (java.sql.date) *@param datestring สตริงที่ต้องแปลงเป็นวันที่ *@return datatime วันที่ */สาธารณะสุดท้ายคงที่ java.sql.date String2date locale.english); dateformat.setLenient (false); java.util.date timedate = dateformat.parse (datestring); // util type java.sql.date datetime = new java.sql.date (timedate.gettime () วันที่ (); // หมายเหตุ: ในสถานที่นี้ da.getTime () ได้รับ System.out.out.println (da.getTime ()); // แปลงจากวันที่เป็นเวลาเวลา // วิธีแรก: ใช้การประทับเวลาใหม่ (ยาว) timestamp t = timestamp ใหม่ System.out.println (t); // วิธีที่สอง: ใช้การประทับเวลา (int ปี, เดือน int, วันที่ int, ชั่วโมง int, นาที, int สอง, int nano) timestamp tt = timestamp ใหม่ (ปฏิทิน. getinstance () รับ (Calendar.year) - 1900, Calendar.get Calendar.date), Calendar.getInstance (). Get (Calendar.Hour), Calendar.getInstance (). Get (Calendar.minute), Calendar.getInstance () รับ (Calendar.second), 0); java.sql.date stotimestamp = "2005-8-18 14: 21: 12.123"; // String standle ที่ใช้ในการแปลงเป็น java.sql.timestamp วันที่วันที่ 1 = String2date (stodate); timestamp date2 = String2time (stotimestamp); ในการแปลงเป็น java.sql.timestamp วันที่วันที่ 1 = string2date (stotimestamp); system.out.println ("วันที่:"+date2.toString ()); // standle string ที่ใช้ในการแปลงเป็น java.sql.timestamp String2time (stotimestamp); System.out.println ("timestamp:"+date2.toString ()); // standle tostack} catch (Exception e) {E.printstacktrace ();}}}}}นี่คือตัวอย่าง:
รหัส Java
การทดสอบแพ็คเกจ; นำเข้า java.text.dateformat; นำเข้า java.text.parseException; นำเข้า java.text.simpledateFormat; นำเข้า java.util.calendar; นำเข้า java.util.date; นำเข้า java.util.hashtable; a [] = s.split ("-"); boolean flg = true; ถ้า (! (integer.parseint (a [0])> = 1950 && inteeger.parseint (a [0]) <= 2050)) {flg = false;} return flg;} SimpledateFormat ("yyyy-mm-dd"); ret = df.format (df.parse (s)). เท่ากับ (s);} catch (parseexception e) {ret = false;} return ret; hashtable (); fest.put ("01-01", "วันปีใหม่"); fest.put ("02-14", "วันวาเลนไทน์"); fest.put ("03-12", "วันอาร์เบอร์"); เทศกาล "); fest.put (" 05-01 "," วันแรงงาน "); fest.put (" 06-01 "," วันเด็ก "); fest.put (" 07-01 "," ศูนย์กลางวันปาร์ตี้ "); วัน "); fest.put (" 12-25 "," คริสต์มาส "); ถ้า (fest.containskey (a [1])) {return fest.get (a [1]);}} {return" no Holiday ";}} public String Xingzuo day = cal.get (calendar.day_of_year); if ((cal.get (calendar.year)%4 == 0) && (cal.get (calendar.year)%100! = 0) || (cal.get (Calendar.year)%400 == 0)) && วัน <= 19) || (วัน> = 357 && วัน <= 366)) {xingzuo = "scorpio";} อื่นถ้า (วัน> = 20 && วัน <= 49) {xingzuo = "aquarius"; && day <= 110) {xingzuo = "aries";} อื่นถ้า (วัน> = 111 && วัน <= 141) {xingzuo = "taurus";} ถ้า (วัน> = 142 && วัน <= 173) {xingzuo = "gemini"; อื่นถ้า (วัน> = 204 && วัน <= 235) {xingzuo = "leo";} อื่นถ้า (วัน> = 236 && วัน <= 266) {xingzuo = "virgo";} อื่นถ้า (วัน> = 267 && && day <= 326) {xingzuo = "scorpio";} อื่นถ้า (วัน> = 327 && วัน <= 356) {xingzuo = "sauvignon";}} else {ถ้า (วัน> = 1 && day <= 19) if (day> = 20 && day <= 48) {xingzuo = "aquarius";} อื่นถ้า (วัน> = 49 && วัน <= 79) {xingzuo = "ราศีมีน";} อื่นถ้า (วัน> =; "taurus";} อื่นถ้า (วัน> = 141 && วัน <= 172) {xingzuo = "gemini";} อื่นถ้า (วัน> = 173 && วัน <= 202) {xingzuo = "มะเร็ง";} ถ้า (วัน> = 203 && && day <= 265) {xingzuo = "virgo";} อื่นถ้า (วัน> = 266 && วัน <= 295) {xingzuo = "libra";} ถ้า (วัน> = 296 && วัน <= 325) {xingzuo = "scorpio"; "saucy";}} return xingzuo;} วันที่สาธารณะ parsedate (สตริง s) {simpledateFormat bartdateformat = new SimpledateFormat ("yyyy-mm-dd"); ลอง {วันที่ 3 = bartdateformat.parse (s); null;}} โมฆะคงที่สาธารณะหลัก (String [] args) {ปฏิทิน cal = calendar.getInstance (); test2 test2 = test2 ใหม่ (); สตริงวันที่ 1 = joptionpane.showInputDialog ("โปรดป้อนวันที่รูปแบบเป็น 2000-10-15"); ในขณะที่ (! (test2.checkdate (วันที่ 1) && test2.isdate (วันที่ 1))) {date1 = joptionpane.showInputDialog ("โปรดป้อนวันที่รูปแบบเป็น 2000-10-15") = new SimpledateFormat ("yyyy-mm-dd"); วันที่วันที่ 2 = test2.parsedate (วันที่ 1); สตริง festinfo = (สตริง) test2.dateinfo (วันที่ 1); system.out.println (bartdateformat1.format (date2)+"," day = joptionpane.showinputDialog ("โปรดป้อนข้อมูลวันที่เพื่อสอบถาม n วัน"); date5 = bartdateformat2.format (cal.gettime ()); festinfo = (สตริง) test2.dateinfo (วันที่ 5); system.out.println (bartdateformat1.format (cal.gettime ())+","+fest2.xingzuo (cal.gettime)สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของการใช้เวลาและวันที่ของ Java และรหัสสอบถามในบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!