groovy中从一个时区到另一个时区的时间转换

groovy中从一个时区到另一个时区的时间转换,groovy,timezone,soapui,Groovy,Timezone,Soapui,我正在尝试将时间从一个时区转换为其他时区 最初,我有时间和它的时区。我想把它转换成其他时区。 例如: 时区:格林尼治标准时间 起始日期:2020-01-15T08:30:00.000Z 现在我想把它转换成IST时区 代码: def oldTimezone = context.expand('${#Project#Timezone}') def SDT = context.expand('${#Project#StartDateTime}') startDate = new SimpleDat

我正在尝试将时间从一个时区转换为其他时区

最初,我有时间和它的时区。我想把它转换成其他时区。 例如: 时区:格林尼治标准时间 起始日期: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
输出

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,并将其转换为UTC。

避免使用旧的日期类,它们会让一切变得困难

解析UTC时间并将其转换为IST时间非常简单:

import java.time.*

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

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

避免旧的约会课程,他们让一切变得困难

解析UTC时间并将其转换为IST时间非常简单:

import java.time.*

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

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

最好使用
ZoneId.of(“亚洲/加尔各答”)
。无需使用旧的
时区
类,由于其模糊性,通常应避免使用短ID。如果我没有错,这将假定原始时区始终为UTC。然后,您可以选择任何其他时区进行转换。在我的例子中,给定的时区不固定为UTC。它可以是任何东西。e、 g:我必须将时间从CST转换为IST。如果以z结尾,则为UTC,不是吗?最好使用
ZoneId.of(“亚洲/加尔各答”)
。无需使用旧的
时区
类,由于其模糊性,通常应避免使用短ID。如果我没有错,这将假定原始时区始终为UTC。然后,您可以选择任何其他时区进行转换。在我的例子中,给定的时区不固定为UTC。它可以是任何东西。e、 g:我必须将时间从CST转换为IST。如果以z结尾,则为UTC,否?这是否回答了您的问题?这回答了你的问题吗?