1413225446.92000
과 같은 기원을 java에서 ZonedDateTime
으로 변환하는 방법?자바에서 ZonedDateTime으로 에포크를 변환하는 방법
주어진 코드는 길이가 값이므로 예상 한 값은 NumberFormatException
입니다.
ZonedDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(dateInMillis)), ZoneId.of(TIME_ZONE_PST));
1413225446.92000
과 같은 기원을 java에서 ZonedDateTime
으로 변환하는 방법?자바에서 ZonedDateTime으로 에포크를 변환하는 방법
주어진 코드는 길이가 값이므로 예상 한 값은 NumberFormatException
입니다.
ZonedDateTime.ofInstant(Instant.ofEpochMilli(Long.parseLong(dateInMillis)), ZoneId.of(TIME_ZONE_PST));
분할 64 비트 정수 (Long)의 한 쌍으로 수 : UTC
은 팩토리 메소드 Instant.ofEpochSecond(long epochSecond, long nanoAdjustment)
Instant
을 준비하고있는 경우 시간대를 지정하여 ZonedDateTime
이되도록하십시오.
ZoneId z = ZoneId.of("America/Los_Angeles") ;
ZonedDateTime zdt = instant.atZone(z) ;
감사합니다. @Basil Bourque. 이 작업을 –
Basil Bourque’s answer이 좋습니다. 분수 부분에서 나노초를 정수로 변환하는 것은 함정 또는 2를 수반 할 수 있습니다. 내가 제안 :
는String dateInMillis = "1413225446.92000";
String[] secondsAndFraction = dateInMillis.split("\\.");
int nanos = 0;
if (secondsAndFraction.length > 1) { // there’s a fractional part
// extend fractional part to 9 digits to obtain nanoseconds
String nanosecondsString
= (secondsAndFraction[1] + "000000000").substring(0, 9);
nanos = Integer.parseInt(nanosecondsString);
// if the double number was negative, the nanos must be too
if (dateInMillis.startsWith("-")) {
nanos = -nanos;
}
}
ZonedDateTime zdt = Instant
.ofEpochSecond(Long.parseLong(secondsAndFraction[0]), nanos)
.atZone(ZoneId.of("Asia/Manila"));
System.out.println(zdt);
이
2014-10-14T02:37:26.920+08:00[Asia/Manila]
우리는 나노초 64 비트가 필요하지 않습니다를 인쇄, 그래서 난 그냥 int
을 사용하고 있습니다.
에포크 시간이 과학 표기법 (1.41322544692E9)으로 제공되는 경우 위의 사항은 작동하지 않습니다. 아시아/마닐라로 발생하지 않은 경우
는 예를 들어 미국/밴쿠버, 미국/로스 엔젤레스 또는 태평양/핏 케언를 들어, 지역/도시 형식으로 원하는 시간대를 대체하십시오. PST와 같은 세 문자 약어를 사용하지 마십시오. 모호하고 종종 실제 시간대가 아닙니다.고마워요 @Ole V.V. –
nanos에는 64 비트 long 코드를 사용할 수도 있습니다. 'Instant.ofEpochSecond'의 인수는 그대로 전달됩니다. –
PST 시간대? 세 가지 (및 네 개의) 문자 시간대 약어를주의하십시오. 모호하고 종종 실제 시간대가 아닙니다. 필리핀 표준시, 태평양 표준시 또는 핏 케언 표준시? 대신 미국/밴쿠버와 같은 시간대를 지정하십시오. 즉, * 지역/도시 *입니다. –
나는 @Ole에 동의한다. 내 코드에서 TIME_ZONE_PST는 America/Los_Angeles를 가리 킵니다 –
Surendran Sajan이 좋습니다. 나는 로스 앤젤레스가 태평양 표준시가 아니라 태평양 표준시에 있기 때문에 이름 바꾸기를 제안합니다. –