ฉันไม่แน่ใจว่าคุณหมายถึงอะไรโดย "มิลลิวินาทีปัจจุบัน" แต่ฉันจะถือว่ามันเป็นจำนวนมิลลิวินาทีนับตั้งแต่ "ยุค" คือเที่ยงคืนวันที่ 1 มกราคม 1970 UTC
หากคุณต้องการที่จะหาจำนวนมิลลิวินาทีตั้งแต่ยุคที่ตอนนี้แล้วใช้System.currentTimeMillis()
เป็นAnubian Noob ได้ชี้ให้เห็น ถ้าเป็นเช่นนั้นไม่มีเหตุผลที่จะใช้ java.time APIs ใด ๆ ในการทำสิ่งนี้
อย่างไรก็ตามคุณอาจมีLocalDateTime
วัตถุที่คล้ายกันอยู่แล้วจากที่อื่นและคุณต้องการแปลงเป็นมิลลิวินาทีนับตั้งแต่ยุค เป็นไปไม่ได้ที่จะทำเช่นนั้นโดยตรงเนื่องจากLocalDateTime
ตระกูลของวัตถุไม่มีความคิดเกี่ยวกับเขตเวลาใดจึงจำเป็นต้องให้ข้อมูลเขตเวลาเพื่อค้นหาเวลาที่เกี่ยวข้องกับยุคซึ่งอยู่ใน UTC
สมมติว่าคุณมีสิ่งLocalDateTime
นี้:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
ZonedDateTime
คุณจำเป็นต้องใช้ข้อมูลโซนเวลาให้ ฉันอยู่ในเขตเวลาเดียวกันกับลอสแองเจลิสดังนั้นฉันจะทำสิ่งนี้:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
แน่นอนสิ่งนี้ทำให้สมมติฐานเกี่ยวกับเขตเวลา และมีกรณีขอบที่สามารถเกิดขึ้นได้เช่นหากเวลาท้องถิ่นเกิดขึ้นกับชื่อเวลาใกล้กับการเปลี่ยนเวลาตามฤดูกาล (เวลาฤดูร้อน) มาแยกกัน แต่คุณควรระวังว่ามีกรณีเหล่านี้อยู่
อย่างไรก็ตามหากคุณได้รับที่ถูกต้องZonedDateTime
คุณสามารถแปลงเป็นจำนวนมิลลิวินาทีนับตั้งแต่ยุคเช่น:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
?