에서 봐 이 방법은 지원되는 필드를 확인합니다. 다음을 찾을 수 있습니다 LocalDateTime
.
•NANO_OF_SECOND
•NANO_OF_DAY
•MICRO_OF_SECOND
•MICRO_OF_DAY
•MILLI_OF_SECOND
•MILLI_OF_DAY
•SECOND_OF_MINUTE
•SECOND_OF_DAY
•MINUTE_OF_HOUR
•MINUTE_OF_DAY
•HOUR_OF_AMPM
•CLOCK_HOUR_OF_AMPM
•HOUR_OF_DAY
•CLOCK_HOUR_OF_DAY
•AMPM_OF_DAY
•DAY_OF_WEEK
•ALIGNED_DAY_OF_WEEK_IN_MONTH
•ALIGNED_DAY_OF_WEEK_IN_YEAR
•DAY_OF_MONTH
•DAY_OF_YEAR
•EPOCH_DAY
•ALIGNED_WEEK_OF_MONTH
•ALIGNED_WEEK_OF_YEAR
•MONTH_OF_YEAR
•PROLEPTIC_MONTH
•YEAR_OF_ERA
•YEAR
•ERA
INSTANT_SECONDS 필드는 물론 LocalDateTime
절대 (전역) 타임 스탬프를 참조 할 수 없기 때문에 지원 되지 않습니다. 그러나 유용한 것은 1970-01-01 이후 경과 된 일수를 계산하는 EPOCH_DAY 필드 입니다. 유사한 생각이 유형에 대해 유효합니다 LocalDate
(더 적은 지원 필드 포함).
존재하지 않는 millis-since-unix-epoch 필드를 얻으려면 로컬에서 전역 유형으로 변환하기위한 시간대도 필요합니다. 이 변환은 훨씬 더 간단하게 수행 할 수 있습니다 . 다른 SO-posts를 참조하십시오 .
질문과 코드의 숫자로 돌아갑니다.
The result 1605 is correct
=> (2014 - 1970) * 365 + 11 (leap days) + 31 (in january 2014) + 3 (in february 2014)
The result 71461 is also correct => 19 * 3600 + 51 * 60 + 1
16105L * 86400 + 71461 = 1970-01-01T00 : 00 : 00 이후 1391543461 초 (주의, 시간대 없음) 그런 다음 시간대 오프셋을 뺄 수 있습니다 (밀리 초 단위 인 경우 1000 배의 가능한 곱셈에주의).
주어진 시간대 정보 이후 업데이트 :
local time = 1391543461 secs
offset = 3600 secs (Europe/Oslo, winter time in february)
utc = 1391543461 - 3600 = 1391539861
두 개의 동등한 접근 방식을 사용하는 JSR-310 코드 :
long secondsSinceUnixEpoch1 =
LocalDateTime.of(2014, 2, 4, 19, 51, 1).atZone(ZoneId.of("Europe/Oslo")).toEpochSecond();
long secondsSinceUnixEpoch2 =
LocalDate
.of(2014, 2, 4)
.atTime(19, 51, 1)
.atZone(ZoneId.of("Europe/Oslo"))
.toEpochSecond();