ต้นฉบับ: http://it.deepinmind.com/java/2015/03/17/20-examples-date-ndate-di-from-java8.html
นอกเหนือจากการแสดงออกของแลมบ์ดาสตรีมและการปรับปรุงเล็ก ๆ หลายครั้งแล้ว Java 8 ยังแนะนำชุดเวลาและวันที่ API ใหม่ในบทช่วยสอนนี้เราจะได้เรียนรู้วิธีใช้ Java 8 ผ่านตัวอย่างงานง่าย ๆ วันที่ของ Java ปฏิทินและการประมวลผลเวลาของ Java ได้รับการวิพากษ์วิจารณ์เสมอโดยเฉพาะอย่างยิ่งมันตัดสินใจที่จะกำหนด java.util.date ตามการแก้ไขและใช้ simpledateFormat ในการรักษาความปลอดภัยที่ไม่ใช่เธรด ดูเหมือนว่า Java ได้ตระหนักว่าจำเป็นต้องให้การสนับสนุนที่ดีขึ้นสำหรับฟังก์ชั่นเวลาและวันที่ซึ่งเป็นสิ่งที่ดีสำหรับชุมชนที่คุ้นเคยกับการใช้ฐานข้อมูล Joda Time ข้อได้เปรียบที่ใหญ่ที่สุดของห้องสมุดเวลาและวันที่ใหม่นี้คือการกำหนดแนวคิดบางอย่างที่เกี่ยวข้องกับเวลาและวันที่ และระยะเวลา ในขณะเดียวกันก็ยังยืมข้อดีบางประการของห้องสมุด Joda เช่นแยกแยะระหว่างผู้คนและเครื่องจักรเพื่อแยกความแตกต่างของวันที่ Java 8 ยังคงใช้ระบบปฏิทิน ISO และไม่เหมือนกับรุ่นก่อนคลาสในแพ็คเกจ Java.Time นั้นไม่สามารถใช้งานได้และเธรด -Safe เวลาและวันที่ใหม่ API อยู่ในแพ็คเกจ Java.Time ด้านล่างเป็นหมวดหมู่คีย์บางส่วนภายใน:
ห้องสมุดใหม่ยังเพิ่มโซนออฟเซ็ตและ Zoned เพื่อให้การสนับสนุนที่ดีขึ้นสำหรับเขตเวลา ด้วย datetimeformatter ใหม่การวิเคราะห์และการจัดรูปแบบของวันที่หลังจากวันที่ได้กลายเป็นใหม่ เพิ่งพูดถึงมันฉันกำลังเขียนบทความนี้เมื่อ Java กำลังจะเปิดตัวฟีเจอร์ใหม่นี้ในเวลานี้ดังนั้นคุณจะพบว่าเวลาในตัวอย่างคือปีที่แล้ว หากคุณเรียกใช้ตัวอย่างเหล่านี้ค่าที่พวกเขากลับมาจะต้องถูกต้อง
มีคนถามฉันว่าวิธีที่ดีที่สุดในการเรียนรู้ห้องสมุดใหม่คืออะไร? คำตอบของฉันคือใช้ในโครงการจริง จะมีความต้องการที่หลากหลายในโครงการจริงซึ่งจะส่งเสริมให้นักพัฒนาสำรวจและศึกษาห้องสมุดใหม่นี้ ในระยะสั้นมีเพียงงานเท่านั้นที่จะส่งเสริมให้คุณสำรวจและเรียนรู้ วันที่และเวลาใหม่ API ของ Java 8 เหมือนกัน เพื่อที่จะเรียนรู้ห้องสมุดใหม่ของ Java 8 ฉันได้สร้างตัวอย่างงาน 20 ตัวอย่างที่นี่ เริ่มต้นด้วยงานง่าย ๆ กล่าวว่ามีการกล่าวว่าการพัฒนาแอปพลิเคชันของการแจ้งเตือนเพื่อค้นหาวันที่เฉพาะเช่นวันเกิดครบรอบวันอาทิตย์วันที่บัญชีถัดไปวันที่มีวันที่พรีเมี่ยมหรือเวลาหมดอายุบัตรเครดิตครั้งต่อไป
มีชั้นเรียนที่เรียกว่า LocalDate ใน Java 8 ซึ่งสามารถใช้เพื่อแสดงวันที่ของวันนี้ คลาสนี้แตกต่างจาก java.util.date เล็กน้อยเพราะมีเพียงวันที่และไม่มีเวลา ดังนั้นหากคุณต้องการระบุวันที่แทนเวลาคุณสามารถใช้งานได้
localdate วันนี้ = localdate.now ();
คุณจะเห็นว่ามันสร้างวันนี้ แต่ไม่รวมข้อมูลเวลา นอกจากนี้ยังสร้างรูปแบบวันที่และส่งออก
คลาส LocalDate ให้วิธีที่สะดวกมากในการใช้แอตทริบิวต์วันที่และวันที่อื่น ๆ ที่สามารถใช้ในการสกัดได้ การใช้วิธีการเหล่านี้คุณสามารถรับแอตทริบิวต์วันที่ใดก็ได้ที่คุณต้องการและไม่จำเป็นต้องใช้คลาสเช่น Java.util.Calendar อีกต่อไป
LocalDate วันนี้ = localDate.now (); ปี, วัน, วัน);
จะเห็นได้ว่ามันง่ายมากที่จะได้รับข้อมูลประจำปีใน Java 8 มันจำเป็นต้องใช้วิธี getter ที่สอดคล้องกันเท่านั้นไม่มีหน่วยความจำที่ใช้งานง่ายมาก คุณสามารถเปรียบเทียบกับการเขียนเดือนและวันปัจจุบันใน Java
ในตัวอย่างแรกเราเห็นว่ามันง่ายมากที่จะสร้างวันที่ของวันผ่านวิธีการคงที่ แต่ด้วยวิธีการที่มีประโยชน์มากในโรงงาน localdate.of () คุณสามารถสร้างวันที่ใดก็ได้ ปี, เดือนและจากนั้นส่งคืนอินสแตนซ์ LocalDate เทียบเท่า ข่าวดีอีกประการหนึ่งเกี่ยวกับวิธีนี้คือมันไม่ได้ทำผิดพลาดใน API ก่อนหน้านี้ สิ่งที่คุณเขียนที่นี่คือสิ่งที่คุณเขียนที่นี่ตัวอย่างเช่นในตัวอย่างต่อไปนี้แสดงถึงวันที่ 14 มกราคมไม่มีตรรกะที่ซ่อนอยู่
LocalDate DateOfBirth = LocalDate.OF (2010, 01, 14);
จะเห็นได้ว่าวันที่สร้างคือสิ่งที่เราเขียน 14 มกราคม 2014
เมื่อพูดถึงเวลาการประมวลผลที่แท้จริงและงานวันที่ในความเป็นจริงหนึ่งเป็นเรื่องธรรมดาที่จะตรวจสอบว่าสองวันมีค่าเท่ากันหรือไม่ คุณมักจะพบว่าจะตัดสินว่าวันนี้เป็นวันพิเศษเช่นวันเกิดครบรอบหรือวันหยุด บางครั้งคุณจะให้วันที่คุณเพื่อให้คุณสามารถตรวจสอบได้ว่าเป็นวันที่แน่นอนหรือไม่ ตัวอย่างต่อไปนี้จะช่วยให้คุณทำงานดังกล่าวใน Java 8 อย่างที่คุณคิดว่า LocalDate เขียนวิธี Equals ใหม่เพื่อเปรียบเทียบวันที่ดังที่แสดงด้านล่าง:
LocalDate Date1 = LocalDate.OF (2014, 01, 14); 2014-01-14 และวันที่ 1 2014-01-14 เป็นวันที่เดียวกัน
ในตัวอย่างนี้การเปรียบเทียบสองวันของเรามีค่าเท่ากัน ในเวลาเดียวกันหากคุณได้รับสตริงวันที่ที่จัดรูปแบบในรหัสคุณต้องแก้ไขเป็นวันที่ก่อนที่คุณจะสามารถเปรียบเทียบได้ คุณสามารถเปรียบเทียบตัวอย่างนี้เพื่อเปรียบเทียบการเปรียบเทียบ Java ก่อนหน้านี้และคุณจะพบว่ามันดีกว่ามาก
นอกจากนี้ยังมีงานที่ใช้งานได้จริงที่เกี่ยวข้องกับวันที่เวลาใน Java เพื่อตรวจสอบเหตุการณ์ที่ซ้ำกัน หากคุณทำงานใน บริษัท e -commerce จะมีโมดูลที่จะส่งความปรารถนาวันเกิดให้กับผู้ใช้และให้คำทักทายในแต่ละวันหยุดที่สำคัญเช่นคริสต์มาสวันขอบคุณพระเจ้าในอินเดียอาจเป็นไปได้ในอินเดีย คือ Deepawali จะตรวจสอบได้อย่างไรว่าเป็นเทศกาลหรือเหตุการณ์ซ้ำ ๆ ใน Java? ใช้ชั้นเรียนประจำวัน หมวดหมู่นี้รวมกันในเดือนและไม่รวมข้อมูลประจำปีซึ่งหมายความว่าคุณสามารถใช้มันเพื่อเป็นตัวแทนของบางวันที่ปรากฏซ้ำในแต่ละปี แน่นอนว่ามีชุดค่าผสมอื่น ๆ เช่นชั้นเรียนประจำปี นอกจากนี้ยังไม่สามารถเปลี่ยนแปลงและเธรดได้อย่างปลอดภัยเหมือนกับประเภทอื่น ๆ ในไลบรารีเวลาใหม่และยังเป็นคลาสที่มีค่า มาดูกันว่าจะใช้วันที่ตรวจสอบวันที่ซ้ำกัน:
LocalDate DTealday Birthday.OF (2010, 01, 14); println ("ผลตอบแทนที่มีความสุขมากมายในวันนี้ !!");แม้ว่าปีจะแตกต่างกัน แต่วันนี้เป็นวันเกิดวันเกิดดังนั้นคุณจะได้เห็นพรวันเกิดในผลงาน คุณสามารถปรับเวลาของระบบและเรียกใช้โปรแกรมเพื่อดูว่าสามารถเตือนคุณได้ว่าวันเกิดครั้งต่อไปคือเมื่อใด
สิ่งนี้คล้ายกับวันที่ปัจจุบันในตัวอย่างแรก เวลานี้เราใช้ชั้นเรียนที่เรียกว่า LocalTime ที่นี่คุณสามารถใช้วิธีการโรงงานคงที่ () เพื่อให้ได้เวลาปัจจุบัน รูปแบบเริ่มต้นคือ HH: MM: SS: NNN และ NNN นี่คือนาโนวินาที มันสามารถเปรียบเทียบกับวิธีการรับเวลาปัจจุบันกับ Java 8
LocalTime time = localtime.now ();
จะเห็นได้ว่าเวลาปัจจุบันไม่รวมวันที่เนื่องจาก LocalTime มีเวลาและไม่มีวันที่เท่านั้น
หลายครั้งที่เราต้องเพิ่มเวลาในอนาคตในทุกนาทีหรือวินาที Java 8 ไม่เพียง แต่ให้ชั้นเรียนที่ไม่เปลี่ยนแปลงและเธรด -Safe เท่านั้น แต่ยังมีวิธีการที่สะดวกกว่าเช่น plushours () เพื่อแทนที่วิธี Add () ดั้งเดิม โดยวิธีการวิธีการเหล่านี้จะส่งคืนการอ้างอิงไปยังอินสแตนซ์ LocalTime ใหม่เนื่องจาก LocalTime ไม่เปลี่ยนรูปอย่าลืมเก็บข้อมูลอ้างอิงใหม่นี้
LocalTime Time = LocalTime.now (); : 33.369
คุณจะเห็นว่าหลังจาก 2 ชั่วโมงของเวลาปัจจุบันคือ 16: 33: 33.369 ตอนนี้คุณสามารถเปรียบเทียบกับวิธีเก่า ๆ ในการเพิ่มหรือลดวิธีการเก่าใน Java เมื่อมองแวบแรกคุณจะรู้ว่าวิธีใดดีกว่า
สิ่งนี้คล้ายกับตัวอย่างก่อนหน้าของสองชั่วโมงก่อนหน้านี้ LocalDate ใช้เพื่อระบุวันที่โดยไม่มีเวลา เนื่องจาก LocalDate นั้นไม่เปลี่ยนรูปการดำเนินการดัดแปลงใด ๆ จะส่งคืนตัวอย่างใหม่ดังนั้นอย่าลืมบันทึกไว้
localdate nextweek = วันนี้ (1, chronounit.weeks); คือ: 2014-01-14 วันที่หลังจาก 1 สัปดาห์: 2014-01-21
คุณสามารถดูว่าวันที่หลังจาก 7 วันคืออะไร คุณสามารถใช้วิธีนี้เพื่อเพิ่มหนึ่งเดือนหนึ่งปีหนึ่งชั่วโมงหนึ่งนาทีหนึ่งนาทีหรือแม้กระทั่งสิบปีตรวจสอบชั้นเรียน chronounit ใน Java API เพื่อรับตัวเลือกเพิ่มเติม
นี่คือภาคต่อของตัวอย่างก่อนหน้า ในตัวอย่างข้างต้นเราได้เรียนรู้วิธีการใช้วิธี Plus () ของ LocalDate เพื่อเพิ่มวันที่สัปดาห์หรือเดือน
LocalDate ก่อนหน้า = วันนี้ minus (1, chronousit.years); " + Nextyear); ผลผลิต: วันที่ก่อน 1 ปี: 2013-01-14 วันที่หลังจาก 1 ปี: 2015-01-14
จะเห็นได้ว่ามีทั้งหมดสองปีหนึ่งคือ 2013 และอีกอันคือปี 2015 ซึ่งเป็นปีก่อนและหลังปี 2014
Java 8 มาพร้อมกับคลาสนาฬิกาคุณสามารถใช้มันเพื่อให้ได้เวลาวันที่หรือเวลาทันทีในเขตเวลาที่แน่นอน คุณสามารถใช้นาฬิกาเพื่อแทนที่ System.currenttimeInmillis () และ Timezone.getDefault ()
// ส่งคืนเวลาปัจจุบันตามนาฬิการะบบของคุณและตั้งค่าเป็น UTC .SystemDefaultZone ();
คุณสามารถใช้วันที่ที่ระบุเพื่อเปรียบเทียบกับนาฬิกานี้ได้เช่นดังนี้:
MyClass คลาสสาธารณะ {นาฬิกาส่วนตัว;หากคุณต้องการจัดการกับวันที่ของเขตเวลาที่แตกต่างกันนี่ค่อนข้างสะดวก
นี่เป็นงานทั่วไปในโครงการจริง คุณจะตัดสินได้อย่างไรว่าวันที่แน่นอนอยู่ข้างหน้าหรือหลังวันที่อื่นหรือเท่ากัน? ใน Java 8 คลาส LocalDate มีวิธีการ isbefore () และ isafter () ที่สามารถใช้ในการเปรียบเทียบสองวัน หากวันที่ของวิธีการโทรเร็วกว่าวันที่ที่กำหนดวิธี isbefore () จะส่งคืนจริง
localdate tomomorrow = localdate.of (2014, 1, 15); ;
จะเห็นได้ว่าวันที่ใน Java 8 นั้นค่อนข้างง่าย ไม่จำเป็นต้องใช้คลาสอื่นเช่นปฏิทินเพื่อให้งานที่คล้ายกันเสร็จสมบูรณ์
Java 8 ไม่เพียง แต่แยกวันที่และเวลา แต่บางครั้งยังรวมถึงภูมิภาค มีหลายกลุ่มที่เกี่ยวข้องกับโซนเวลา มันเทียบเท่ากับชั้นเรียน Gregoriancalendar ก่อน Java 8 การใช้คลาสนี้คุณสามารถแปลงเวลาท้องถิ่นเป็นเวลาที่สอดคล้องกันในเขตเวลาอื่นเช่นตัวอย่างต่อไปนี้:
// วันที่และเวลาที่มีเขตเวลาใน Java 8 Zoneid America = Zoneid.of ("American/News"); เขตเวลา: " + DateAndTimeInWyork); เอาท์พุท: วันที่และเวลาปัจจุบันในเขตเวลาเฉพาะ: 2014-01-14T16: 33.373-05: 00 [American/New_york]มันสามารถเปรียบเทียบกับเวลาในการแปลงเวลาท้องถิ่นเป็นเวลา GMT โดยวิธีการก่อนหน้า Java 8 ข้อความในเขตเวลาที่สอดคล้องกันไม่ควรเข้าใจผิดมิฉะนั้นคุณจะพบข้อยกเว้นดังกล่าว:
ข้อยกเว้นในเธรด "Main" java.time.zone.zonerseexception: ไม่ทราบเวลา zone id: เอเชีย/โตเกียวที่ lesprovider.java:272) ที่ java.time.zone.zonerulesprovider.getRules time.zoneregy.ofid (zoneregy.java:120) ที่ java.time.zoneid.of (zoneid.java:403) ที่ java.time.zoneid.o f (zoneid.java: 351)
เช่นเดียวกับ Monthday แสดงวันที่ซ้ำกัน Yearmonth เป็นชุดค่าผสมอีกครั้ง คุณสามารถใช้คลาสนี้เพื่อค้นหาจำนวนวันนั้นในเดือนนั้นความยาวของเดือน () วิธีนี้จะส่งคืนกี่วันอินสแตนซ์ของเดือนนี้ซึ่งมีประโยชน์มากสำหรับการตรวจสอบว่าเป็น 28 วันในเดือนกุมภาพันธ์หรือ 29 วัน
Yearmonth Currentyearmonth = Yearmonth.now (); ; "บัตรเครดิตของคุณหมดอายุใน %S %N", CreditCardExpiRy);
สิ่งนี้ไม่ซับซ้อน หากคุณยังต้องการทำซ้ำล้อคุณสามารถดูรหัสนี้ได้
if (วันนี้.
คุณสามารถตรวจสอบได้สองสามปีเพื่อดูว่าผลลัพธ์ถูกต้องหรือไม่
งานทั่วไปอีกประการหนึ่งคือการคำนวณจำนวนวันที่รวมกี่สัปดาห์หรือปีระหว่างวันที่กำหนดทั้งสอง คุณสามารถใช้ Java.time ในตัวอย่างต่อไปนี้เราจะคำนวณทั้งหมดหลายเดือนก่อนวันที่ปัจจุบันและวันที่ในอนาคต
localdate java8release = localdate.of (2014, เดือนมีนาคม, 14); );
จะเห็นได้ว่าเดือนนี้คือเดือนมกราคมและวันที่วางจำหน่ายของ Java 8 คือเดือนมีนาคมดังนั้นจึงอยู่ห่างกัน 2 เดือน
ใน Java 8 คุณสามารถใช้คลาส ZoneOffset เพื่อแสดงถึงเขตเวลาที่แน่นอน ตราบใดที่คุณได้รับการชดเชยนี้คุณสามารถใช้ LocalDateTime และออฟเซ็ตนี้เพื่อสร้าง OfficetateTime
LocalDaletime Dotetime = LocalDatetime.OF (2014, เดือนมกราคม, 14, 19, 30); .println ("วันที่และเวลาที่มีการชดเชยเขตเวลาใน Java:" + วันที่);จะเห็นได้ว่าวันที่ปัจจุบันเกี่ยวข้องกับเขตเวลา อีกประเด็นหนึ่งคือเครื่องจักรที่เป็นส่วนใหญ่เป็นที่เข้าใจกันโดยเครื่อง
หากคุณยังจำวิธีที่จะได้รับการประทับเวลาปัจจุบันก่อน Java 8 นี่เป็นอาหารจานเล็ก ๆ คลาสทันทีมีวิธีการโรงงานคงที่ในขณะนี้ () เพื่อส่งคืนการประทับเวลาปัจจุบันดังต่อไปนี้:
timestamp ทันที = ทันที Now ();
จะเห็นได้ว่าการประทับเวลาปัจจุบันรวมถึงวันที่และเวลาซึ่งคล้ายกับ java.util.date เป็น java.util.date และ date.toinstant () แปลงวันที่เป็นทันที
ก่อนที่ Java 8 การจัดรูปแบบของวันที่เวลาเป็นงานด้านเทคนิค ต้องขอบคุณตัวแปรท้องถิ่นของเธรดทำให้มันมีประโยชน์ในสภาพแวดล้อมแบบหลายเธรด แต่มันเป็นเวลานานที่ Java จะรักษาสถานะนี้ เวลานี้แนะนำรูปแบบการรักษาความปลอดภัยของเธรดใหม่ นอกจากนี้ยังมาพร้อมกับรูปแบบที่กำหนดไว้ล่วงหน้าซึ่งมีรูปแบบวันที่ที่ใช้กันทั่วไป ตัวอย่างเช่นในตัวอย่างนี้เราใช้รูปแบบวันที่ ISO พื้นฐานที่กำหนดไว้ล่วงหน้าซึ่งจะจัดรูปแบบ 14 กุมภาพันธ์ 2014 ถึง 20140114
Dayaftertommorm = "20140116"; -16
คุณจะเห็นว่าวันที่ของการสร้างถูกจับคู่กับค่าของสตริงที่ระบุซึ่งแตกต่างกันเล็กน้อยในรูปแบบวันที่
ในตัวอย่างข้างต้นเราใช้รูปแบบเวลาและวันที่ในตัวเพื่อแก้ไขสตริงวันที่ แน่นอนว่ารูปแบบที่กำหนดไว้ล่วงหน้านั้นดีจริงๆ แต่บางครั้งคุณอาจต้องใช้รูปแบบวันที่ที่กำหนดเองในเวลานี้คุณต้องสร้างอินสแตนซ์รูปแบบวันที่ที่กำหนดเอง รูปแบบวันที่ในตัวอย่างนี้คือ "MMM DD YYYY" คุณสามารถผ่านวิธีการของ Pattern Static () ไปยังวิธีการของ Pattern Static ของ Datetimeformatter () และจะส่งคืนอินสแตนซ์ ตัวอย่างเช่น M ยังคงเป็นตัวแทนของเดือนและ M ยังคงถูกแบ่งออก โหมดที่ไม่ถูกต้องจะโยนความผิดปกติของ DateTimeparsexception แต่ถ้าเป็นข้อผิดพลาดเชิงตรรกะตัวอย่างเช่นควรใช้เป็น M เมื่อ M ดังนั้นจึงไม่มีทาง
String GoodFriday = "Apr 18 2014"; ", GoodFriday, Holiday);} catch (dateTimeparsexception ex) {system.out.printf ("%s ไม่สามารถแยกได้!%n ", GoodFriday); วันที่คือ 2014-04-18จะเห็นได้ว่าค่าของวันที่สอดคล้องกับสตริงที่ผ่าน แต่รูปแบบแตกต่างกัน
ในสองตัวอย่างก่อนหน้านี้แม้ว่าเราจะใช้คลาส DatetimeFormatter แต่เราก็แยกวิเคราะห์สตริงวันที่เป็นหลัก ในตัวอย่างนี้สิ่งที่เราต้องทำคือสิ่งที่ตรงกันข้าม ที่นี่เรามีอินสแตนซ์ของคลาส LocalDateTime และเราต้องการแปลงเป็นสตริงวันที่ที่จัดรูปแบบ นี่เป็นวิธีที่ง่ายที่สุดและสะดวกที่สุดในการแปลงวันที่เป็นสตริงใน Java จนถึงตอนนี้ ตัวอย่างต่อไปนี้จะส่งคืนสตริงที่จัดรูปแบบ เช่นเดียวกับตัวอย่างก่อนหน้านี้เรายังคงต้องใช้สตริงโหมดที่ระบุเพื่อสร้างอินสแตนซ์ของคลาส DateTimeFormatter แต่วิธีการแยกวิเคราะห์ของคลาส localDate ไม่ได้เป็น แต่วิธีการรูปแบบ () วิธีนี้จะส่งคืนสตริงที่แสดงถึงวันที่ปัจจุบันและโหมดที่สอดคล้องกันคือที่กำหนดไว้ในอินสแตนซ์ DatetimeFormatter ที่แนะนำ
localDaleTime MEACHDATE = localDateTime.now (); ลอง {datetimeformatter format = datetimeformatter.ofpater rrivaldate.format (รูปแบบ); System.out.printf ("%s ไม่สามารถจัดรูปแบบ!%n", arrivaldate);จะเห็นได้ว่าเวลาปัจจุบันแสดงด้วยโหมด "MMM DD Yyyy HH: MM A"
หลังจากอ่านตัวอย่างเหล่านี้ฉันเชื่อว่าคุณมีความเข้าใจบางอย่างเกี่ยวกับชุดเวลาและวันที่ของ Java 8 ตอนนี้เรามองย้อนกลับไปที่องค์ประกอบสำคัญของ API ใหม่นี้
อย่างน้อยนักพัฒนา Java แต่ละคนควรเข้าใจ APIs ใหม่เหล่านี้ทั้งห้าประเภทนี้:
ถุงหลักของห้องสมุดนี้คือ java.time ซึ่งมีชั้นเรียนเวลาเวลาทันทีและระยะเวลาของวันที่ตัวแทนเวลาเวลาทันทีและระยะเวลา มันมีสองแพ็คเกจหนึ่งคือ java.time.foramt
โซนเวลาหมายถึงพื้นที่ที่ใช้เวลามาตรฐานเดียวกันบนโลกใบนี้ มีตัวระบุที่ไม่ซ้ำกันในแต่ละเขตเวลารวมถึงรูปแบบของภูมิภาค/เมือง (เอเชีย/โตเกียว) และเวลาชดเชยเริ่มต้นจากเวลากรีนนิช ตัวอย่างเช่นเวลาชดเชยของโตเกียวคือ +09: 00
ชั้นเรียนที่มีการดำเนินการมีจริงในท้องถิ่นและ zoneOffset มันถูกใช้เพื่อระบุวันที่สมบูรณ์ (+06: 00 หรือ -08: 00) ที่มีการชดเชยเวลาของ Greenwita (+/- ชั่วโมง: คะแนนเช่น +06: 00 หรือ -08: 00)
คลาส DateTimeFormatter ใช้สำหรับการจัดรูปแบบและการวิเคราะห์วันที่ใน Java ซึ่งแตกต่างจาก SimpledateFormat มันไม่เปลี่ยนแปลงและปลอดภัยอย่างละเอียด คลาส DateTimeFormatter มีรูปแบบที่กำหนดไว้ล่วงหน้าจำนวนมากและคุณยังสามารถปรับแต่งรูปแบบที่คุณต้องการ แน่นอนตามข้อตกลงมันยังมีวิธีการแยกวิเคราะห์ () เพื่อแปลงสตริงเป็นวันที่ ในทำนองเดียวกันคลาส DateFormatter ยังมีวิธีการจัดรูปแบบ () สำหรับวันที่จัดรูปแบบ
สมมติว่ารูปแบบวันที่สองของ "MMM D YYYY" และ "MMM DD YYYY" ก็แตกต่างกันเล็กน้อย ใน "2 ม.ค. 2014" จะรายงานข้อผิดพลาดเพราะคาดว่าจะมีอักขระสองตัวในเดือนนี้ ในการแก้ปัญหานี้ในกรณีของตัวเลขหลักคุณต้องทำ 0 ด้านหน้า
นี่เป็นเรื่องเกี่ยวกับวันที่ใหม่ของ Java 8 ตัวอย่างสั้น ๆ เหล่านี้เพียงพอที่จะเข้าใจ API ใหม่ใน API ใหม่นี้ เนื่องจากมีการอธิบายตามงานจริงเมื่อพบใน Java จึงไม่จำเป็นต้องมองหาเวลาและวันที่ เราได้เรียนรู้วิธีการสร้างและแก้ไขวันที่เวลา นอกจากนี้เรายังเข้าใจถึงความแตกต่างระหว่างวันที่บริสุทธิ์วันที่เวลาและเขตเวลาของเขตเวลา หลายวันมีวันครบรอบหรือวันประกัน นอกจากนี้เรายังได้เรียนรู้วิธีการวิเคราะห์และจัดรูปแบบวันที่ในวิธีการรักษาความปลอดภัยเธรดใน Java 8 โดยไม่ต้องใช้ตัวแปรเธรดท้องถิ่นหรือไลบรารีที่สาม API ใหม่มีความสามารถสำหรับงานใด ๆ ที่เกี่ยวข้องกับวันที่เวลา
หากคุณสนใจบทเรียน Java 8 คุณสามารถดูบทเรียนต่อไปนี้:
ลิงค์ต้นฉบับภาษาอังกฤษ