Преобразование времени из одного часового пояса в другой в groovy - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь преобразовать время из одного часового пояса в другой.

Изначально у меня есть время и его часовой пояс. Я хочу преобразовать его в другой часовой пояс. Например: Часовой пояс: GMT Стандартное время StartDateTime: 2020-01-15T08: 30: 00.000Z

Теперь я хочу преобразовать его в часовой пояс IST

Код:

def oldTimezone = context.expand('${#Project#Timezone}')
def SDT = context.expand('${#Project#StartDateTime}') 
startDate =  new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").parse(SDT)
log.info 'time : ' + startDate 
def dateformat =  new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
dateformat.setTimeZone(TimeZone.getTimeZone(oldTimezone));
def currentTimeinUTC = dateformat.format(startDate);
log.info 'time set in first timezone : ' + currentTimeinUTC

Output

Wed Jan 15 14:43:32 IST 2020:INFO:time : Wed Jan 15 08:30:00 IST 2020
Wed Jan 15 14:56:16 IST 2020:INFO:time set in first timezone : 2020-01-15T03:00:00.000Z

Если это вернет мне вывод '2020-01-15T08: 30: 00.000Z', то я точно так же преобразую его в IST. Но проблема в том, что он понимает, что исходное время указано в IST, и преобразует его в UT C.

.

1 Ответ

2 голосов
/ 15 января 2020

Избегайте старых классов дат, они все усложняют ...

Чтобы проанализировать это время UT C и преобразовать его во время IST, достаточно просто:

import java.time.*

def parsedUTCTime = ZonedDateTime.parse('2020-01-15T08:30:00.000Z')

def istTime = parsedUTCTime.withZoneSameInstant(TimeZone.getTimeZone("IST").toZoneId())
...