Java 8에서 UTC+0 날짜를 얻는 방법
Java의 Date 클래스에 문제가 있습니다.날짜 클래스에서 로컬 컴퓨터 날짜를 반환하지만 UTC-0이 필요합니다.
구글에서 검색해 보니 자바스크립트에 대한 훌륭한 솔루션을 찾았지만 자바에 대한 유용한 솔루션은 없었습니다.
Java 8에서 UTC+0 날짜를 얻는 방법
dr;dr
Instant.now()
java.time
Java의 가장 오래된 버전에 번들된 성가신 오래된 날짜 시간 클래스는 Java 8 이후에 내장된 java.time 클래스로 대체되었습니다.Oracle 자습서를 참조하십시오.기능의 대부분은 ThreeTen-Backport의 Java 6 & 7로 백포트되었으며 ThreeTenABP의 Android에 더욱 적응되었습니다.
Instant
는 타임라인상의 순간을 UTC 단위로 최대 나노초의 분해능으로 나타냅니다.
Instant instant = Instant.now();
toString
method는 표준 ISO 8601 형식 중 하나를 사용하여 날짜 값을 나타내는 텍스트가 포함된 String 개체를 생성합니다.
String output = instant.toString();
2016-06-27T 19:15:25.864Z
Instant
는 javaclass java.time의 입니다.일반적으로 UTC에서 날짜 값을 추적, 저장 및 교환하는 것이 가장 좋기 때문에 날짜 시간을 처리할 때 이 클래스가 필요합니다.
OffsetDateTime
★★★★★★★★★★★★★★★★★.Instant
에는 대체 형식의 문자열을 생성하기 위한 포맷옵션이 없는 등의 제한이 있습니다. 위해 에서 합니다.Instant
. UTC로부터의 오프셋을 지정합니다.java.time에서는 오브젝트를 의미합니다.여기에서는 편리한 상수를 사용할 수 있도록 UTC(+00)를 사용합니다.
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );
2016-06-27T 19:15:25.864Z
, 「」를 합니다.Instant
를 누릅니다
OffsetDateTime.now( ZoneOffset.UTC )
, 이제 ㅇㅇ, ㅇㅇ.OffsetDateTime
object in hand를 사용하여 대체 형식의 텍스트가 포함된 String 객체를 작성할 수 있습니다.스택 오버플로 검색에서 많은 사용 예제를 확인합니다.DateTimeFormatter
.
ZonedDateTime
특정 시간대의 벽시계를 표시하는 경우 를 적용하여를 가져옵니다.
이 예에서는 Montréal 시간대를 적용합니다.여름 여름, Daylight Saving Time(DST; 일광 절약 시간)의 넌센스에서 존의 오프셋은-04:00
해 주십시오.15
19
시간.Instant
및ZonedDateTime
둘 다 같은 동시 순간을 나타내며, 단지 두 개의 다른 렌즈를 통해서만 볼 수 있습니다.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
2016-06-27T15:15:25.864-04:00[미국/몬트리올]
변환중
이전 날짜-시간 클래스는 피해야 하지만 이전 클래스에 추가된 새 메서드를 사용하여 변환할 수 있어야 합니다.여기서는및을사용합니다.
java.util.Date utilDate = java.util.Date.from( instant );
그리고 반대 방향으로.
Instant instant= utilDate.toInstant();
새로운 방법을 .GregorianCalendar
의 )Calendar
java.time.ZonedDateTime
.

java.time 정보
java.time 프레임워크는 Java 8 이후에 포함되어 있습니다.이러한 클래스는 , 및 등 문제가 많은 오래된 레거시 날짜 시간 클래스를 대체합니다.
자세한 내용은 Oracle 자습서를 참조하십시오.또한 Stack Overflow를 검색하여 많은 예와 설명을 확인하십시오.사양은 JSR 310입니다.
현재 유지보수 모드에 있는 조다 타임 프로젝트는 java.time 클래스로의 이행을 권장합니다.
java.time 객체를 데이터베이스와 직접 교환할 수 있습니다.JDBC 4.2 이후에 준거한JDBC 드라이버를 사용합니다.스트링도 필요 없고java.sql.*
반.휴지 상태 5 및 JPA 2.2는 java.time을 지원합니다.
java.time 클래스는 어디서 얻을 수 있습니까?
- Java SE 8, Java SE 9, Java SE 10, Java SE 11 및 이후 - 표준 Java API의 일부이며 번들 구현이 포함되어 있습니다.
- 자바 9는 몇 가지 사소한 기능과 수정을 제공했습니다.
- Java SE 6 및 Java SE 7
- java.time 기능의 대부분은 ThreeTen 백포트의 Java 6 및7로 백포트됩니다.
- 안드로이드
- 최신 버전의 Android(26+) 번들 구현 java.time 클래스.
- 이전의 Android(<26)에서는 API 디스카어링이라고 하는 프로세스가 원래 Android에 내장되어 있지 않은 java.time 기능의 서브셋을 가져옵니다.
- 디스거링이 필요한 기능을 제공하지 않는 경우 쓰리텐ABP 프로젝트는 ThreeTen-Backport(상기)를 Android에 적용합니다.'쓰리텐ABP 사용방법'을 참조하십시오.
Java 8에서는 다음을 쓸 수 있습니다.
OffsetDateTime utc = OffsetDateTime.now(ZoneOffset.UTC);
코멘트에 응답하기 위해서, 그 코멘트를 날짜(기존 코드에 의존하지 않는 한) 또는 에폭스 이후의 millis로 변환할 수 있습니다.
Date date = Date.from(utc.toInstant());
long epochMillis = utc.toInstant().toEpochMilli();
java8을 합니다.Instant
이 클래스는 이미 UTC에 있고 작업하기에 편리합니다.
import java.time.Instant;
Instant ins = Instant.now();
long ts = ins.toEpochMilli();
Instant ins2 = Instant.ofEpochMilli(ts)
또는 다음을 사용할 수 있습니다.
import java.time.*;
Instant ins = Instant.now();
OffsetDateTime odt = ins.atOffset(ZoneOffset.UTC);
ZonedDateTime zdt = ins.atZone(ZoneId.of("UTC"));
로 돌아가다Instant
Instant ins4 = Instant.from(odt);
Java8에서는 새로운 Time API를 사용하고 UTC TimeZone을 사용하여 Instant를 ZonedDateTime으로 변환합니다.
내 프로젝트에서 이걸 했는데 참 잘 되네
Date now = new Date();
System.out.println(now);
TimeZone.setDefault(TimeZone.getTimeZone("UTC")); // The magic is here
System.out.println(now);
언급URL : https://stackoverflow.com/questions/26142864/how-to-get-utc0-date-in-java-8
'itsource' 카테고리의 다른 글
MySQL Select Query - 값의 처음 10자만 가져옵니다. (1) | 2022.10.15 |
---|---|
하위 디렉토리에서 파일을 가져오시겠습니까? (1) | 2022.10.15 |
Java regex 캡처 그룹 인덱스 (0) | 2022.10.15 |
DeprecationWarning: 잘못된 이스케이프 시퀀스 - \d 대신 사용할 항목 (0) | 2022.10.15 |
SQLSTATE [22007]:잘못된 날짜/시간 형식: 1292 잘못된 날짜/시간 값: '2008-03-30 02:56:12' (0) | 2022.10.15 |