반응형
ZoneOffset의 차이점은 무엇인가?UTC 및 ZoneId.of("UTC")?
왜 그럴까?
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now.withZoneSameInstant(ZoneOffset.UTC)
.equals(now.withZoneSameInstant(ZoneId.of("UTC"))));
인쇄하다.false
?
둘 다 예상할 수 있다.ZonedDateTime
대등한 예
답은 ...의 자바도크에서 나온다.
ZoneId는 Instant와 LocalDateTime 간 변환에 사용되는 규칙을 식별하는 데 사용된다.ID에는 다음과 같은 두 가지 유형이 있다.
- 고정 오프셋 - UTC/Greenwich에서 완전히 분해된 오프셋으로, 모든 현지 날짜에 동일한 오프셋을 사용함
- 지역 - UTC/Greenwich에서 오프셋을 찾기 위한 특정 규칙 집합이 적용되는 지역
대부분의 고정 오프셋은 ZoneOffset으로 표현된다.ZoneId에서 정규화된()를 호출하면 고정 오프셋 ID가 ZoneOffset으로 표시되도록 할 것이다.
이 방법은 ZoneId 또는 ZoneOffset을 생성하는 ID를 구문 분석한다.ZoneOffset은 ID가 'Z'이거나 '+' 또는 '-'로 시작하면 반환된다.
인수 ID가 다음과 같이 지정됨"UTC"
그러므로 그것은 a를 반환할 것이다.ZoneId
문자열 형식으로 표시되는 오프셋 포함:
System.out.println(now.withZoneSameInstant(ZoneOffset.UTC));
System.out.println(now.withZoneSameInstant(ZoneId.of("UTC")));
출력:
2017-03-10T08:06:28.045Z
2017-03-10T08:06:28.045Z[UTC]
사용하면서equals
비교 방법, 개체 동등성을 확인하십시오.기술된 차이 때문에 평가 결과는 다음과 같다.false
.
설명서에 제시된 대로 방법을 사용할 경우 다음을 사용하여 비교하십시오.equals
돌아올 것이다true
로서normalized()
그에 상응하는 것을 돌려줄 것이다.ZoneOffset
:
시간대 ID를 정규화하고 가능한 경우 ZoneOffset을 반환하십시오.
now.withZoneSameInstant(ZoneOffset.UTC)
.equals(now.withZoneSameInstant(ZoneId.of("UTC").normalized())); // true
설명서에 나와 있는 바와 같이 다음을 사용하는 경우"Z"
또는"+0"
입력 ID로,of
다시 돌아올 것이다.ZoneOffset
직접 전화할 필요가 없다.normalized()
:
now.withZoneSameInstant(ZoneOffset.UTC).equals(now.withZoneSameInstant(ZoneId.of("Z"))); //true
now.withZoneSameInstant(ZoneOffset.UTC).equals(now.withZoneSameInstant(ZoneId.of("+0"))); //true
같은 날짜 시간을 저장하는지 확인하려면 대신 다음 방법을 사용하십시오.
now.withZoneSameInstant(ZoneOffset.UTC)
.isEqual(now.withZoneSameInstant(ZoneId.of("UTC"))); // true
샘플
System.out.println("equals - ZoneId.of(\"UTC\"): " + nowZoneOffset
.equals(now.withZoneSameInstant(ZoneId.of("UTC"))));
System.out.println("equals - ZoneId.of(\"UTC\").normalized(): " + nowZoneOffset
.equals(now.withZoneSameInstant(ZoneId.of("UTC").normalized())));
System.out.println("equals - ZoneId.of(\"Z\"): " + nowZoneOffset
.equals(now.withZoneSameInstant(ZoneId.of("Z"))));
System.out.println("equals - ZoneId.of(\"+0\"): " + nowZoneOffset
.equals(now.withZoneSameInstant(ZoneId.of("+0"))));
System.out.println("isEqual - ZoneId.of(\"UTC\"): "+ nowZoneOffset
.isEqual(now.withZoneSameInstant(ZoneId.of("UTC"))));
출력:
equals - ZoneId.of("UTC"): false
equals - ZoneId.of("UTC").normalized(): true
equals - ZoneId.of("Z"): true
equals - ZoneId.of("+0"): true
isEqual - ZoneId.of("UTC"): true
반응형
'Programing' 카테고리의 다른 글
vuex 상태 + persistedState 플러그인에 토큰을 저장하는 것이 안전한가? (0) | 2022.05.06 |
---|---|
Java에서 LinkedList over ArrayList를 사용하는 시기 (0) | 2022.05.06 |
Vuex 데이터를 사후 대응적으로 만들기 (0) | 2022.05.06 |
모키토 던져진 예외를 어떻게 조롱하고 주장할 것인가? (0) | 2022.05.06 |
C에 철자 배열을 연결하다 (0) | 2022.05.06 |