"현재 밀리 초"가 무엇을 의미하는지 완전히 확신 할 수는 없지만 1970 년 1 월 1 일 자정 (UTC) 이후 "에포크"이후의 밀리 초 수라고 가정하겠습니다.
당신은 시대 이후의 밀리 초 수를 찾으려면 지금 다음 사용 System.currentTimeMillis()
으로 Anubian 멍청한 놈 지적했다 . 그렇다면 새로운 java.time API를 사용하여이를 수행 할 이유가 없습니다.
그러나 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()
?