2016-11-16 3 views
-3

편집 :Java : 특별한 날짜를 길게 만드는 우아한 솔루션?

내가 유닉스 타임 스탬프를 원하는 날짜에 대해 11.11.2016 날짜가 있다고 가정 해 봅시다.

순간

난 그냥

 final int start = (int) ((System.currentTimeMillis() - 24 * 60 * 60 * 1000 * 6)/1000L); 

것 2016년 10월 11일에 대한

final int start = (int) ((System.currentTimeMillis() - 24 * 60 * 60 * 1000 * 5)/1000L); 

을 사용하지만 어떻게 든 너무 기본 :

어쩌면 더 나은 해결책이 보인다? Date 나 LocalTime에서 어떤 함수도 찾을 수 없었습니다.

감사합니다.

+1

"및 빼기 일"? 정확히 무엇을하고 싶니? [이] (http://stackoverflow.com/questions/7784421/getting-unix-timestamp-from-date)? [또는 이것] (http://stackoverflow.com/a/20906602/1743880)? – Tunaki

+0

['Instant # toEpochMilli'] (https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#toEpochMilli--) 및 ['Instant # getEpochSecond'] (https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#getEpochSecond--). – bradimus

+1

여기에는 기본 유형 불일치가 있습니다. '10.05.2016'은 하루 동안의 기간입니다. 유닉스 타임 스탬프는 대략 한 순간에 발생합니다 (사실, 두 번째 기간입니다). '10.05.2016'을 유닉스 타임 스탬프로 변환 할 수 없습니다. 2) 시간. –

답변

4

시간을 으로 지정한 경우 에포크 초를 원하는 시간대를 "초"로 변환하는 것이 좋습니다.

그렇지 않으면 "날짜"가 특정 시간대의 24 시간 (일반적으로)이기 때문에 변환이 정의되지 않은 반면 유닉스 타임 스탬프는 1970-1-1 00:00:00 이후의 초 수입니다 UTC.

LocalDate.of(2016, 5, 10) 

    // e.g. LocalTime.of(12, 0) or .atStartOfDay() 
    // - *not* midnight, in general, since this does not always exist. 
    .atTime(someLocalTime) 

    // e.g. ZoneId.of("UTC") 
    .atZone(someTimeZoneId) 

    .toEpochSecond(); 
관련 문제