มีหลายชั้นเรียนที่เกี่ยวข้องโดยตรงกับวันที่ใน Java สิ่งที่ใช้กันมากที่สุดคือวันที่และปฏิทินภายใต้แพ็คเกจ java.util เมื่อคุณต้องการใช้รูปแบบคุณจะใช้ java.text.simpledateFormat
ก่อนอื่นขอให้ฉันบ่นว่าวันที่และปฏิทินนั้นค่อนข้างน่าอึดอัดใจที่จะใช้ ฉันไม่คุ้นเคยกับมันเมื่อฉันใช้มันครั้งแรกและฉันไม่สามารถบอกการใช้งานเฉพาะและความแตกต่างระหว่างวันที่และคลาสปฏิทิน
ยิ่งไปกว่านั้นวิธีการตั้งค่าคลาสปฏิทินมีการต่อต้านมนุษย์บางอย่างเมื่อตั้งวันที่ เมื่อตั้งค่าเดือนคุณจะต้องชดเชยและลบ 1 ตัวอย่างเช่นหากคุณต้องการตั้งค่าเป็น 6 มกราคม 2018 คุณต้องตั้งค่าเป็น 2018, 0, 6, เพราะเดือนมกราคมเป็นตัวแทน 0 ที่นี่:
ปฏิทิน cal = calendar.getInstance (); cal.set (2018, 0, 8);
ด้วยเหตุผลเฉพาะโปรดดูคำตอบที่นี่: Stackoverflow: ทำไมเดือนมกราคม 0 ในปฏิทิน Java?
อย่างไรก็ตามฉันไม่สามารถยืนได้ -
ไม่กี่วันที่ผ่านมามีข้อกำหนดง่ายๆซึ่งเป็นการคำนวณอายุตามสองวัน ฉันตรวจสอบอินเทอร์เน็ตและละทิ้งวันที่ยากและคลาสปฏิทินโดยตรงและใช้ java.time.localdate โดยตรง โดยไม่ต้องกังวลใจเพิ่มเติมเพียงอัปโหลดรหัส:
นำเข้า java.time.localdate; Public Class Testlocaldate {โมฆะคงที่สาธารณะหลัก (String [] args) {localDate วันที่ 1 = localDate.of (2018, 1, 6); localDate Date2 = localDate.OF (1991, 1, 3); อายุ int = date2.UNTIL (วันที่ 1) .getYears (); System.out.println ("คุณ" + อายุ + "อายุ"); -ผลลัพธ์ผลลัพธ์:
คุณอายุ 27 ปี
การเรียกการแปลงที่ซับซ้อนเล็กน้อยและท่วมท้นระหว่างวันที่และคลาสปฏิทินถูกทอดทิ้งและรหัสก็ชัดเจนมาก มันไม่น่าพอใจมากเหรอ?
java.time เป็นห้องสมุดวันที่และเวลาที่เพิ่งเปิดตัวใหม่ใน Java 8 วิธีการต่อไปนี้ทั้งหมดอยู่ในแพ็คเกจ java.time
ลองมาดูกันว่ารหัสนี้คำนวณความแตกต่างของเวลาในวิธีที่เรียบง่ายและสดชื่นได้อย่างไร:
ก่อนอื่น LocalDate เป็นคลาสที่ไม่เปลี่ยนรูป
จากนั้นมีวิธีการใช้โดยคลาส localDate เพื่อตั้งค่าวันที่:
สาธารณะคงที่สาธารณะของ (ปี int, เดือนเดือน, int dayofmonth) public static localdate ของ (ปี int, เดือน int, int dayofmonth)
มีสามวิธีที่โอเวอร์โหลดทั้งหมดสองวิธีซึ่งมีการระบุไว้ที่นี่ ชั้นเรียนเดือนแรกเป็นประเภท enum ที่มีชื่อภาษาอังกฤษของเดือนเช่นมกราคมพฤศจิกายน, ฯลฯ
ประการที่สองคือการตั้งค่าปกติของปีเดือนและวัน ข่าวดีก็คือเดือนที่นี่เริ่มต้นจาก 1 ซึ่งหมายความว่าคุณไม่จำเป็นต้องลบ 1 ด้วยตนเองอีกต่อไป! - -
ต่อไปนี้เป็นวิธีการที่ใช้โดยคลาส localDate เพื่อเปรียบเทียบวันที่:
ช่วงเวลาสาธารณะจนถึง (Chronolocaldate EnddateExclusive)
วิธีนี้ส่งคืนวัตถุของระยะเวลาประเภท
ระยะเวลาแสดงช่วงระยะเวลาที่มีรูปร่างเช่น "2 ปี, 3 เดือน, 4 วัน" วิธี Getyears ถัดไปที่เรียกว่าเป็นของคลาสช่วงเวลา
สุดท้ายลองมาดูวิธีการบางอย่างเพื่อรับช่วงเวลาในชั้นเรียนระยะเวลา:
สาธารณะ int getyears () public int getMonths () public int getDays ()
ทั้งสามวิธีนี้ใช้เพื่อให้ได้ปีและวันของช่วงเวลาตามลำดับ ใช่มันง่ายมาก
สรุป
ข้างต้นเป็นวิธีการใช้งานของการใช้ LocalDate เพื่อคำนวณอายุตามวันที่ใน Java ที่แนะนำโดยตัวแก้ไข ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนทันเวลา!