tl; dr
LocalDateTime.parse(
"2016-01-23 12:34".replace( " " , "T" )
)
.atZone( ZoneId.of( "Asia/Karachi" ) )
.plusMinutes( 10 )
java.time
날짜-시간 작업을 위해 우수한 java.time 클래스를 사용하십시오. 이 클래스는 다음과 같은 번거로운 된 날짜 - 시간의 수업을 대신하는 java.util.Date
과 java.util.Calendar
.
ISO 8601
java.time 클래스 는 날짜-시간 값의 문자열을 구문 분석 / 생성하기 위해 기본적으로 표준 ISO 8601 형식을 사용 합니다. 입력 문자열을 준수하려면 가운데의 SPACE를 T
.
String input = "2016-01-23 12:34" ;
String inputModified = input.replace( " " , "T" );
LocalDateTime
LocalDateTime
시간대 또는 UTC로부터의 오프셋에 대한 정보가 없기 때문에 입력 문자열을 파싱합니다 .
LocalDateTime ldt = LocalDateTime.parse( inputModified );
10 분을 추가합니다.
LocalDateTime ldtLater = ldt.plusMinutes( 10 );
ldt.toString () : 2016-01-23T12 : 34
ldtLater.toString () : 2016-01-23T12 : 44
IdeOne.com에서 라이브 코드를 참조하십시오 .
즉 LocalDateTime
그것은 않도록, 시간 영역이없는 하지 타임 라인에 포인트를 나타냅니다. 실제 순간으로 번역 할 시간대를 적용합니다. 지정 적절한 시간대 이름 의 형식 continent/region
예컨대, America/Montreal
, Africa/Casablanca
, 또는 Pacific/Auckland
, 나 Asia/Karachi
. 3-4 문자 약어를 사용하지 마십시오 같은 EST
하거나 IST
또는 PKT
그들이 있습니다로 하지 진정한 시간대가 아닌 표준화, 심지어 고유하지 않은 (!).
ZonedDateTime
이 값의 의도 된 시간대를 알고있는 경우를 적용 ZoneId
하여 ZonedDateTime
.
ZoneId z = ZoneId.of( "Asia/Karachi" );
ZonedDateTime zdt = ldt.atZone( z );
zdt.toString () : 2016-01-23T12 : 44 + 05 : 00 [아시아 / 카라치]
이상
시간대를 추가하기 전이나 후에 10 분을 추가할지 생각해보십시오. 벽시계 시간 을 변경하는 일광 절약 시간 (DST)과 같은 이상으로 인해 매우 다른 결과를 얻을 수 있습니다 .
영역을 추가하기 전 또는 후에 10 분을 추가해야하는지 여부는 비즈니스 시나리오 및 규칙의 의미에 따라 다릅니다.
도움말 : 타임 라인에서 특정 순간을 계획 할 때는 항상 시간대 정보를 유지하세요 . 입력 데이터와 마찬가지로 해당 정보를 잃지 마십시오. 값 12:34
이 파키스탄의 정오 또는 프랑스의 정오 또는 퀘벡의 정오를 의미합니까? 파키스탄에서 정오를 의미했다면 최소한 UTC 오프셋 ( +05:00
)과 시간대 이름 ( ) 을 포함하여 그렇게 말 하십시오 Asia/Karachi
.
Instant
의 렌즈를 통해 본 같은 순간을하려면 UTC , 압축을 풉니 다 Instant
. 이 Instant
클래스는 나노초 (소수점의 최대 9 자리) 의 해상도로 타임 라인의 한 순간을 UTC 로 나타냅니다 .
Instant instant = zdt.toInstant();
변하게 하다
가능한 한 번거로운 이전 날짜-시간 수업을 피하십시오. 하지만 필요한 경우 변환 할 수 있습니다. 이전 클래스에 추가 된 새 메서드를 호출합니다.
java.util.Date utilDate = java.util.Date.from( instant );
java.time 정보
java.time의 프레임 워크는 나중에 자바 8에 내장되어 있습니다. 이 클래스는 까다로운 기존에 대신 기존 과 같은 날짜 - 시간의 수업을 java.util.Date
, Calendar
, SimpleDateFormat
.
Joda 타임 프로젝트는 현재의 유지 관리 모드 , java.time로 마이그레이션을 조언한다.
자세한 내용은 Oracle Tutorial을 참조하십시오 . 그리고 많은 예제와 설명을 위해 Stack Overflow를 검색하십시오. 사양은 JSR 310 입니다.
java.time 클래스는 어디서 구할 수 있습니까?
ThreeTen - 추가 프로젝트 추가 클래스와 java.time를 확장합니다. 이 프로젝트는 java.time에 향후 추가 될 수있는 가능성을 입증하는 곳입니다. 당신은 여기에 몇 가지 유용한 클래스와 같은 찾을 수 있습니다 Interval
, YearWeek
, YearQuarter
, 그리고 더 .