ในระหว่างการพัฒนาของ Java ฉันเข้าไปพัวพันกับประเภทวันที่อย่างหลีกเลี่ยงไม่ได้ ฉันจะสรุปการดำเนินงานที่เกี่ยวข้องกับวันที่ซึ่งโครงการมักใช้ JDK เวอร์ชัน 1.7 หากมันสามารถช่วยให้คุณประหยัดเวลาไม่กี่นาทีในการลุกขึ้นและขยับและทำกาแฟสักถ้วยมันจะดีมาก ฮิฮิ แน่นอนฉันให้บริการโซลูชั่นที่มีศักยภาพเท่านั้นและไม่รับประกันว่าจะเป็นแนวปฏิบัติที่ดีที่สุดและยินดีต้อนรับการอภิปราย
1. ค่าวันที่
ในยุคของ JDK เก่ามีรหัสมากมายที่ใช้คลาส java.util.date ในแง่ของค่าวันที่ อย่างไรก็ตามเนื่องจากคลาสวันที่ไม่สะดวกที่จะบรรลุความเป็นสากลจึงขอแนะนำให้ใช้คลาส Java.util.Calendar สำหรับการประมวลผลเวลาและวันที่เริ่มต้นจาก JDK1.1 ฉันจะไม่แนะนำการดำเนินงานของคลาสวันที่ที่นี่ ตรงไปที่หัวข้อและวิธีการใช้คลาสปฏิทินเพื่อรับวันที่และเวลาปัจจุบัน
เนื่องจากวิธีตัวสร้างของปฏิทินได้รับการแก้ไขโดยการป้องกันเราจะสร้างวัตถุปฏิทินผ่านวิธีการ getInstance ที่มีให้ใน API
// มีหลายวิธีที่โอเวอร์โหลดหลายวิธีในการสร้างปฏิทินวัตถุปฏิทินตอนนี้ = ปฏิทิน GetInstance (); // ค่าเริ่มต้น // ระบุเขตเวลาและภูมิภาคหรือคุณสามารถป้อนเฉพาะหนึ่งในปฏิทินพารามิเตอร์ตอนนี้ = calendar.getInstance (เขตเวลา, สถานที่);
จากนั้นเราสามารถรับพารามิเตอร์เวลาต่าง ๆ ในปัจจุบันผ่านวัตถุ
int year = now.get (calendar.year); //, ปีปัจจุบัน int = now.get (calendar.month) +; //, เดือนปัจจุบันโปรดเพิ่ม int day = now.get (calendar.date); //, วันที่วันปัจจุบัน = now.getTime (); // รับวันที่พิมพ์โดยตรง
ในการรับข้อมูลเวลาประเภทอื่นคุณจะต้องแก้ไขพารามิเตอร์ในตอนนี้ get () นอกเหนือจากพารามิเตอร์สามตัวข้างต้นพารามิเตอร์ที่ใช้กันทั่วไปอื่น ๆ มีดังนี้:
• Calendar.day_of_month: วันที่เช่นเดียวกับปฏิทินวัน
•ปฏิทิน. ชั่วโมง: 12 ชั่วโมงชั่วโมง
• Calendar.hour_of_day: จำนวนชั่วโมงในระบบ 24 ชั่วโมง
• Calendar.minute: นาที
•ปฏิทินวินาที: วินาที
• Calendar.day_of_week: รายสัปดาห์
นอกเหนือจากการได้รับข้อมูลเวลาแล้วเรายังสามารถตั้งค่าพารามิเตอร์เวลาต่าง ๆ ผ่านวัตถุปฏิทิน
// ตั้งค่าเฉพาะค่าของฟิลด์บางอย่าง // ชุดโมฆะสุดท้ายสาธารณะ (ฟิลด์ int, ค่า int) now.set (calendar.year,); // กำหนดปี, เดือน, วัน, ชั่วโมง, เดือน, วัน, ชั่วโมง, นาที, นาที, ครั้งที่สอง // public final void set (ปี int, เดือน int, วันที่ int [, int hourofday, นาที int, int second]) now.set (, [,,,]; // ลงทะเบียนวันที่พิมพ์วันที่โดยตรง // public สุดท้าย void settime (วันที่) now.set (วันที่);
สังเกต:
•เมื่อตั้งค่าพารามิเตอร์เวลาค่าอื่น ๆ ที่เกี่ยวข้องจะถูกคำนวณใหม่ ตัวอย่างเช่นเมื่อคุณกำหนดวันที่เป็นวันที่ 11 การเปลี่ยนแปลงที่สอดคล้องกันจะเกิดขึ้นในสัปดาห์
•เดือนที่คุณได้รับคือบวก 1 เดือนจริงคือเดือน
•ในชั้นเรียนปฏิทินวันอาทิตย์คือ 1 วันจันทร์คือ 2 และอื่น ๆ
2. การแปลงวันที่
หลังจากพูดคุยเกี่ยวกับวันที่แล้วให้พูดคุยเกี่ยวกับการแปลงวันที่ การแปลงโดยทั่วไปคือการแปลงร่วมกันระหว่างวันที่วันที่วันที่และสตริงประเภทสตริง ฉันใช้ java.text.simpledateFormat เป็นหลักสำหรับการดำเนินการแปลง
SimpledateFormat SDF = New SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); ลอง {// วันที่ไปสู่ปฏิทินปฏิทิน = ปฏิทิน. getInstance (); วันที่ = calendar.getTime (); String datestringParse = sdf.format (วันที่); // สตริงถึงวันที่สตริง datestring datestring = "- ::"; วันที่ dateparse = sdf.parse (datestring); } catch (parseexception e) {e.printstacktrace (); -สังเกต:
•รูปแบบการแปลงจะต้องระบุเมื่อสร้างวัตถุ SimpledateFormat
•รูปแบบการแปลงเป็นตัวพิมพ์ใหญ่ที่ละเอียดอ่อน yyyy แสดงถึงปี, MM หมายถึงเดือน, DD แสดงถึงวันที่, HH หมายถึงชั่วโมงในปี 2011, HH แสดงถึงชั่วโมงในปี 1011, MM แสดงถึงนาทีและ SS แสดงวินาที
3. การเพิ่มวันที่และการลบ
โดยทั่วไปแล้วเราจะทำการเพิ่มเติมสองครั้งและการลบการดำเนินการในวันที่:
•ขึ้นอยู่กับวันที่คำนวณวันที่ก่อน/หลังก่อน/หลังหรือหลัง/หลังหรือก่อนและหลังหน่วยเวลาอื่น ๆ
// คำนวณปฏิทินตอนนี้ = Calendar.getInstance (); Now.add (Calendar.year,); // หลังจากปีปัจจุบันตอนนี้ ADD (Calendar.year, -); // ก่อนปีของเวลาปัจจุบัน // คำนวณปฏิทิน specialdate = calendar.getInstance (); specialdate.settime (วันที่); // โปรดทราบว่าค่าของ specialdate ถูกเปลี่ยนเป็นวันที่เฉพาะ specialdate.add (calendar.year,); // หลังจากปีที่เฉพาะเจาะจง specialdate.add (calendar.year, -); // ก่อนปีที่กำหนด
โปรดทราบว่าใช้วิธีการเพิ่มของวัตถุปฏิทิน คุณสามารถเปลี่ยนปฏิทินได้ทุกปีเป็นฟิลด์หน่วยเวลาเพื่อทำการคำนวณวันที่เสร็จสิ้นภายใต้หน่วยเวลาต่าง ๆ
•คำนวณช่วงเวลาระหว่างสองครั้งตัวอย่างเช่นขณะนี้มีกี่วันในวันที่ 1 มกราคม 2016
SimpledateFormat SDF = New SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); สตริง datestring = "- ::"; ปฏิทินปฏิทิน = ปฏิทิน GetInstance (); long nowdate = calendar.getTime (). getTime (); //date.getTime () รับวันที่มิลลิวินาทีลอง {long specialdate = sdf.parse (datestring) .getTime (); long betweendate = (specialdate - nowdate) / ( * * *); // คำนวณจำนวนวันที่ห่างกันหารด้วยสูตรการแปลงของมิลลิวินาทีเป็นวัน system.out.print (betweendate); } catch (parseexception e) {e.printstacktrace (); - 4. การเปรียบเทียบวันที่
เมื่อมองผ่านรหัสก่อนหน้าของฉันฉันพบว่าเมื่อใดก็ตามที่ฉันดำเนินการเปรียบเทียบวันที่ฉันจะแปลงวันที่เป็นสตริงในรูปแบบ "yyyymmdd" ก่อนจากนั้นจะแปลงสตริงเป็นค่าจากนั้นเปรียบเทียบขนาดของค่า ฮ่าฮ่ามันเป็นการดำเนินการเปรียบเทียบอย่างง่าย แต่ต้องใช้รหัสมากกว่าหนึ่งโหลในการเขียนซึ่งค่อนข้างทนไม่ได้ ตอนนี้เราต้องพูดคุยเกี่ยวกับท่าเปรียบเทียบวันที่ที่ถูกต้อง
โดยทั่วไปมีสองวิธีสำหรับการเปรียบเทียบวันที่ซึ่งเป็นเรื่องธรรมดาสำหรับ java.util.date หรือ java.util.calendar หนึ่งคือการเปรียบเทียบกับวิธีการก่อนหน้า () ผ่าน () และอีกวิธีหนึ่งคือวิธีการเปรียบเทียบ () ผ่านวิธีการเปรียบเทียบ ()
SimpledateFormat SDF = New SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); String Datestring_01 = "2016-01-01 11:11:11"; String Datestring_02 = "2016-01-02 11:11:11:11"; วันที่ date_02 = sdf.parse (datestring_02); System.out.println (Date_01.Before (date_02)); // จริงเมื่อวันที่ _01 น้อยกว่าวันที่ _02 เมื่อมันเป็นจริงมิฉะนั้นจะเป็น false system.out.println (date_02.after (date_01)); // จริงเมื่อวันที่ _02 มากกว่า date_01 มันเป็นจริงมิฉะนั้นจะเป็น false system.out.println (date_01.Compareto (date_02)); // -1, เมื่อวันที่ _01 น้อยกว่าวันที่ _02 มันคือ -1 system.out.println (date_02.compareto (date_01)); // 1 เมื่อวันที่ _02 มากกว่าวันที่ _01 มันเป็น 1 system.out.println (date_02.compareto (date_02)); // 0, เมื่อสองวันที่เท่ากันก็คือ 0} catch (parseException e) {e.printstacktrace ();}ข้างต้นคือคำอธิบายเต็มรูปแบบของการดำเนินการวันที่ทั่วไป (ค่าการแปลงการเพิ่มและการลบการเปรียบเทียบ) ใน Java แนะนำให้คุณรู้จักในบทความนี้ ฉันหวังว่าคุณจะชอบมัน