TL; DR
คุณขอเศษเสี้ยววินาทีของเวลาปัจจุบันเป็นจำนวนมิลลิวินาที ( ไม่นับจากยุค)
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- หาเศษส่วนของวินาทีเป็นนาโนวินาที (พันล้าน)
- หารด้วยหนึ่งพันเพื่อตัดทอนเป็นมิลลิวินาที (พัน)
ดูนี้ใช้รหัสสดที่ IdeOne.com
ใช้ java.time
วิธีที่ทันสมัยคือคลาส java.time
จับภาพช่วงเวลาปัจจุบันใน UTC
Instant.now()
ใช้Instant.get
วิธีการซักถามเพื่อหาค่าของTemporalField
. ในกรณีของเราที่เราต้องการคือTemporalField
ChronoField.MILLI_OF_SECOND
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
หรือทำคณิตศาสตร์ด้วยตัวคุณเอง
มีแนวโน้มว่าคุณจะถามเรื่องนี้สำหรับเขตเวลาที่เฉพาะเจาะจง เสี้ยววินาทีนั้นน่าจะเหมือนกับInstant
แต่มีความผิดปกติมากมายเกี่ยวกับเขตเวลาฉันลังเลที่จะตั้งสมมติฐานนั้น
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
ซักถามเศษเสี้ยววินาที คำถามถามมิลลิวินาทีแต่เรียน java.time ใช้ความละเอียดปลีกย่อยของนาโนวินาที นั่นหมายความว่าจำนวนนาโนวินาทีจะอยู่ในช่วงตั้งแต่ 0 ถึง 999,999,999
long nanosFractionOfSecond = zdt.getNano();
หากคุณต้องการมิลลิวินาทีอย่างแท้จริงให้ตัดทอนข้อมูลที่ละเอียดกว่าด้วยการหารด้วยหนึ่งล้าน ตัวอย่างเช่นครึ่งวินาทีคือ 500,000,000 นาโนวินาทีและเป็น 500 มิลลิวินาทีด้วย
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
เกี่ยวกับ java.time
java.timeกรอบถูกสร้างขึ้นใน Java 8 และต่อมา ชั้นเรียนเหล่านี้แย่งลำบากเก่ามรดกเรียนวันที่เวลาเช่นjava.util.Date
, และCalendar
SimpleDateFormat
โครงการJoda-Timeขณะนี้อยู่ในโหมดการบำรุงรักษาแนะนำการโยกย้ายไปยังคลาสjava.time
ต้องการเรียนรู้เพิ่มเติมโปรดดูที่ออราเคิลกวดวิชา และค้นหา Stack Overflow สำหรับตัวอย่างและคำอธิบายมากมาย ข้อมูลจำเพาะคือJSR 310310
จะหาคลาส java.time ได้ที่ไหน?
- Java SE 8และ SE 9และใหม่กว่า
- Built-in
- ส่วนหนึ่งของ Java API มาตรฐานพร้อมการใช้งานแบบรวม
- Java 9 เพิ่มคุณสมบัติและการแก้ไขเล็กน้อย
- Java SE 6และ SE 7
- มากของการทำงาน java.time จะกลับรังเพลิง Java 6 และ 7 ในThreeTen-ย้ายกลับ
- Android
โครงการThreeTen-Extraขยาย java.time ด้วยคลาสเพิ่มเติม โปรเจ็กต์นี้เป็นพื้นที่พิสูจน์สำหรับการเพิ่ม java.time ในอนาคต คุณอาจพบว่าการเรียนที่มีประโยชน์บางอย่างที่นี่เช่นInterval
, YearWeek
, YearQuarter
และอื่น ๆ อีกมากมาย
[0, 999]
ถูกต้อง? @thinksteep อ่านประโยคสุดท้าย