2016-10-10 4 views
2

LocalDateTime 클래스에는 epoch 초와 nano second를 UTC 시간으로 변환하는 방법이 있습니다. 00 :LocalDateTime에 대해 1970-01-01T00 : 00 : 00Z의 기본 시간을 변경하는 방법

LocalDateTime dateTime = LocalDateTime.ofEpochSecond() 

하지만,이 1970-01-01T00의 에포크에서 사용 LocalDateTime 초 인스턴스를 얻는다 : 같이

그것은 00Z 보인다.

기본 인스턴스로 1970에서 1980을 수정할 수있는 방법이 있습니까?

epoch seconds = 667662644 
epoch nanoseconds = 1165598 

가 나올한다 : 나는 그것을 필요로 생각

은 이후에 변경 될

13:50:44.001165598 03/03/2001 

그러나 나는 점점 오전 : 밖으로

13:50:44.001165598 2/27/1991 
+3

짧은 답변 : 아니! 긴 답변 : 신기원이 Java 신기원과 같지 않으면 차이점을 적용하는 것은 사용자의 몫입니다. 1970 년 1 월 1 일부터 1980 년 1 월 1 일까지의 초 수 (315532800). – Andreas

+0

@Andreas ok. 오프셋을 계산하고 LocalTimeClass를 사용합니다. 팁 감사. –

+0

2007 년 1 월 1 일의 신기원을 가진 667662644는 2001 년 3 월 3 일이 아닌 2/26/200/2001입니다. 주어진 값은 윤년이있는 그레고리오 달력조차도 아닌 것으로 보입니다. – Andreas

답변

1

그림을 당신을 상쇄 'LocalDateTime'으로 변환하기 전에 모든 에포크 초 값을 필요에 따라 추가하십시오.

오프셋 한 번 계산하고 하드 코딩 할 수

public static final int EPOCH_OFFSET = nnnn; 

로 샘플 :

Instant GPS = Instant.parse("1980-01-06T00:00:00Z"); 
    long GPS_EPOCH = GPS.toEpochMilli(); 
    System.out.printf("%s %,d\n",GPS.toString(), GPS_EPOCH); 

출력 :

1980-01-06T00:00:00Z 315,964,800,000 
+0

Ok. 당신의 대답에 감사드립니다. 그냥 명확히하기 위해, 나는 1970 년 1 월 1 일부터 1980 년 6 월 1 일까지의 에포크 초의 양을 찾아야하고, 그것은 EPOCH_OFFSET이 될 것이고, 그 다음에는 총 에포크 초에서 그 수를 뺀다. –

+1

@JaredSmith 1980 년 6 월 1 일? 정말? – Andreas

+1

원하는 에포크의 'LocalDateTime'을 생성하고 Java epoch 초로 변환하여 오프셋을 얻을 수 있습니다. 그런 다음 에포크를 기반으로하는 시간 값을 Java 에포크로 변환하는 데 _add_합니다. 원래 응답에서 작업을 잘못 입력 했으므로 수정했습니다. –