TL; DR
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19: 24: 25.694
java.time
ใน Java 8 และใหม่กว่าเรามีเฟรมเวิร์กjava.time ที่สร้างขึ้นใน Java 8 และใหม่กว่า คลาสใหม่เหล่านี้แทนที่คลาส java.util.Date/.Calendar เก่าที่ลำบาก คลาสใหม่นี้ได้รับแรงบันดาลใจจากกรอบการทำงานของJoda-Time ที่ประสบความสำเร็จอย่างสูงซึ่งมีจุดประสงค์เพื่อเป็นตัวตายตัวแทนซึ่งคล้ายกับแนวคิด แต่ได้รับการออกแบบใหม่ กำหนดโดยJSR 310 ขยายโดยThreeTen-พิเศษโครงการ ดูการสอน
โปรดทราบว่า java.time มีความสามารถในการแก้ปัญหาระดับนาโนวินาที (9 ตำแหน่งทศนิยมในเสี้ยววินาที) เทียบกับความละเอียดระดับมิลลิวินาที (ทศนิยม 3 ตำแหน่ง) ของทั้ง java.util.Date และ Joda-Time ดังนั้นเมื่อจัดรูปแบบเพื่อแสดงทศนิยม 3 ตำแหน่งคุณอาจซ่อนข้อมูลได้
หากคุณต้องการกำจัดไมโครวินาทีหรือนาโนวินาทีจากข้อมูลของคุณให้ตัดทอน
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
คลาส java.time ใช้รูปแบบISO 8601ตามค่าเริ่มต้นเมื่อแยกวิเคราะห์ / สร้างสตริง Z
ในตอนท้ายสั้นสำหรับZulu
และวิธีUTC
Instant
หมายถึงช่วงเวลาในระยะเวลาใน UTC ที่มีความละเอียดได้ถึงนาโนวินาที การจับภาพช่วงเวลาปัจจุบันใน Java 8 ถูก จำกัด ไว้ที่มิลลิวินาทีโดยมีการใช้งานใหม่ใน Java 9 ซึ่งถ่ายได้นานถึงนาโนวินาทีขึ้นอยู่กับความสามารถของนาฬิกาฮาร์ดแวร์ของคอมพิวเตอร์ของคุณ
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
แทนที่T
ตรงกลางด้วยช่องว่างและเว้นว่างZ
ไว้เพื่อรับเอาต์พุตที่คุณต้องการ
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23: 24: 25.694
ในขณะที่คุณไม่สนใจเกี่ยวกับการรวมออฟเซ็ตหรือโซนเวลาให้กำหนดวันที่ "ท้องถิ่น" ที่ไม่เกี่ยวข้องกับท้องถิ่นใด ๆ
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda เวลา
ห้องสมุด Joda-Time ที่ประสบความสำเร็จเป็นแรงบันดาลใจให้กับเฟรมเวิร์ก java.time แนะนำให้โยกย้ายไปยัง java.time เมื่อสะดวก
ISO 8601รูปแบบรวมถึงมิลลิวินาทีและเป็นค่าเริ่มต้นสำหรับJoda เวลา 2.4 ห้องสมุด
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
เมื่อวิ่ง ...
Now: 2013-11-26T20:25:12.014Z
นอกจากนี้คุณสามารถขอเศษเสี้ยววินาทีเป็นมิลลิวินาทีหากต้องการ:
int millisOfSecond = myDateTime.getMillisOfSecond ();