Tôi không hoàn toàn chắc chắn ý của bạn về "mili giây hiện tại" nhưng tôi sẽ cho rằng đó là số mili giây kể từ "kỷ nguyên", cụ thể là nửa đêm, ngày 1 tháng 1 năm 1970 UTC.
Nếu bạn muốn tìm số mili giây kể từ kỷ nguyên ngay bây giờ, thì hãy sử dụng System.currentTimeMillis()
như Anubian Noob đã chỉ ra . Nếu vậy, không có lý do gì để sử dụng bất kỳ API java.time mới nào để làm điều này.
Tuy nhiên, có thể bạn đã có một LocalDateTime
hoặc đối tượng tương tự từ một nơi nào đó và bạn muốn chuyển đổi nó thành mili giây kể từ thời đại. Không thể thực hiện điều đó một cách trực tiếp, vì LocalDateTime
gia đình của các đối tượng không có khái niệm về múi giờ họ đang ở. Do đó, thông tin múi giờ cần được cung cấp để tìm thời gian liên quan đến kỷ nguyên, trong UTC.
Giả sử bạn có một cái LocalDateTime
như thế này:
LocalDateTime ldt = LocalDateTime.of(2014, 5, 29, 18, 41, 16);
Bạn cần áp dụng thông tin múi giờ, đưa ra a ZonedDateTime
. Tôi ở cùng múi giờ với Los Angeles, vì vậy tôi sẽ làm một cái gì đó như thế này:
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Los_Angeles"));
Tất nhiên, điều này làm cho các giả định về múi giờ. Và có những trường hợp cạnh có thể xảy ra, ví dụ, nếu giờ địa phương xảy ra để đặt tên thời gian gần thời gian chuyển đổi Ánh sáng ban ngày (Giờ mùa hè). Hãy đặt chúng sang một bên, nhưng bạn nên biết rằng những trường hợp này tồn tại.
Dù sao, nếu bạn có thể có được một giá trị ZonedDateTime
, bạn có thể chuyển đổi số này thành số mili giây kể từ thời đại, như vậy:
long millis = zdt.toInstant().toEpochMilli();
System.currentTimeMillis()
vậy?