tl; dr
ZonedDateTime.now(
ZoneId.of( "America/Montreal" )
)
…ของเขตเวลาเริ่มต้นปัจจุบัน…
ZonedDateTime.now(
ZoneId.systemDefault()
)
รายละเอียด
คำตอบโดยสตานิส Bshkyrtsevอย่างถูกต้องและตรงตอบคำถามของคุณ
แต่มีปัญหาขนาดใหญ่ที่เกี่ยวข้องกับการตามข้อเสนอแนะในคำตอบโดยจอนสกีต
LocalDateTime
ฉันไม่พบวิธีการแปลงช่วงเวลาที่สองเป็น LocalDateTime
LocalDateTime
โดยเจตนาไม่มีแนวคิดเรื่องเขตเวลาหรือ offset-from-UTC ไม่น่าจะเป็นสิ่งที่คุณต้องการ Local…
หมายใด ๆท้องที่ไม่คนใดคนหนึ่งท้องที่ใดท้องที่หนึ่ง ชั้นนี้ไม่ได้หมายถึงช่วงเวลาเท่านั้นที่อาจเกิดขึ้นในช่วงเวลาที่พร้อมช่วงประมาณ 26-27 ชั่วโมง (ช่วงของโซนเวลาทั่วโลกบริการ)
Instant
ไม่จำเป็นต้องเริ่มต้นด้วยช่วงวินาทีหากคุณพยายามหาเวลาปัจจุบัน Instant
ได้รับในปัจจุบัน Instant
ชั้นหมายถึงช่วงเวลาบนไทม์ไลน์ในส่วนUTCมีความละเอียดของนาโนวินาที (ถึงเก้า (9) ตัวเลขของส่วนทศนิยม)
Instant instant = Instant.now();
ข้างในนั้นInstant
คือจำนวนนับนาโนวินาที - จากยุค แต่เราไม่สนใจจริงๆ
ZonedDateTime
หากคุณต้องการเห็นช่วงเวลานั้นผ่านเลนส์นาฬิกาแขวนของภูมิภาคใดภูมิภาคหนึ่งให้ใช้ a ZoneId
ให้ใช้ a ZonedDateTime
.
ZoneId z = ZoneId.of( "Europe/Paris" );
ZonedDateTime zdt = instant.atZone( z );
เป็นทางลัดคุณสามารถทำได้โดยตรงกับไฟล์ ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.now( z );
A ZonedDateTime
มีInstant
อยู่ภายใน โทรzdt.toInstant()
เพื่อรับช่วงเวลาเดียวกันเป็นค่าพื้นฐานใน UTC จำนวนนาโนวินาทีตั้งแต่ยุคเท่ากันทั้งแบบ a ZonedDateTime
หรือแบบInstant
.
วินาทีตั้งแต่ยุคที่กำหนด
หากคุณได้รับการนับจำนวนวินาทีตั้งแต่ยุคและยุคเป็นช่วงเวลาแรกของปี 1970 ในUTC ( 1970-01-01T00:00:00Z
) ให้ป้อนตัวเลขInstant
นั้นเป็น
long secondsSinceEpoch = 1_484_063_246L ;
Instant instant = Instant.ofEpochSecond( secondsSinceEpoch ) ;
เกี่ยวกับ java.time
java.timeกรอบถูกสร้างขึ้นใน Java 8 และต่อมา ชั้นเรียนเหล่านี้แย่งลำบากเก่ามรดกเรียนวันที่เวลาเช่นjava.util.Date
,Calendar
SimpleDateFormat
และ
ต้องการเรียนรู้เพิ่มเติมโปรดดูที่ออราเคิลกวดวิชา และค้นหา Stack Overflow สำหรับตัวอย่างและคำอธิบายมากมาย ข้อมูลจำเพาะคือ JSR 310
โครงการJoda-Timeขณะนี้อยู่ในโหมดการบำรุงรักษาแนะนำให้ย้ายไปยังคลาสjava.time
คุณสามารถแลกเปลี่ยนวัตถุjava.timeโดยตรงกับฐานข้อมูลของคุณ ใช้ไดรเวอร์ JDBC ที่สอดคล้องกับJDBC 4.2หรือใหม่กว่า ไม่จำเป็นต้องมีสตริงไม่จำเป็นต้องมีjava.sql.*
คลาส
จะหาคลาส java.time ได้ที่ไหน?
โครงการThreeTen-Extraขยาย java.time ด้วยคลาสเพิ่มเติม โปรเจ็กต์นี้เป็นพื้นที่พิสูจน์สำหรับการเพิ่ม java.time ในอนาคต คุณอาจพบว่าการเรียนที่มีประโยชน์บางอย่างที่นี่เช่นInterval
, YearWeek
, YearQuarter
และอื่น ๆ อีกมากมาย
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
ทำงานหรือไม่ มันเป็นunexpected token
สำหรับฉันในชวา 11