#datetime #groovy #soapui #milliseconds
#время даты #groovy #soapui #миллисекунды
Вопрос:
Я пытаюсь преобразовать определенное время даты в миллисекунду. Затем я должен добавить 15 минут к миллисекундам. Оба вывода должны быть в миллисекундах.
TimeZone.setDefault(TimeZone.getTimeZone('UTC'))
d = "21/09/2020"
t = "03:00"
Date unixTimedate = new Date("$d $t:00");
long fromTime = unixTimedate.getTime()
log.info fromTime
def c = new Date(fromTime).format("dd/MM/yyyy'T'HH:mm:ss");
log.info c
d = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").parse(c)
use(TimeCategory)
{
def startdate2 = d 15.minutes
log.info "updated datetime" startdate2
def outputDateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
def newstartdatetime = "${startdate2.format(outputDateFormat)}"
log.info "StartDateTime : " newstartdatetime
long toTime = newstartdatetime.getTime()
log.info toTime
}
Вывод:
Пн, 21 сентября 08:17:17 UTC 2020:ИНФОРМАЦИЯ:1631156400000
что
Чт, 09 сентября 2021 года, 03:00:00
21 теперь преобразовано в 09
Ответ №1:
Если вы используете JDK 8 , вы можете использовать классы даты и времени, которые вдохновлены потрясающей библиотекой Joda-Time.
Рассмотрим:
import java.time.*
import java.time.format.DateTimeFormatter
import java.util.concurrent.TimeUnit
def formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy'T'HH:mm:ss")
def text1 = "21/09/2020T03:00:00"
def dateTime1 = LocalDateTime.parse(text1, formatter)
def zonedDateTime1 = dateTime1.atZone(ZoneId.of("UTC"))
long milliValue1 = zonedDateTime1.toInstant().toEpochMilli()
def intervalInSeconds = TimeUnit.MINUTES.toSeconds(15)
def milliValue2 = zonedDateTime1.toInstant()
.plusSeconds(intervalInSeconds)
.toEpochMilli()
def dateTime2 = LocalDateTime.ofInstant(
Instant.ofEpochMilli(milliValue2), ZoneId.of("UTC"))
def text2 = dateTime2.format(formatter)
println "milliValue1 : " milliValue1
println "text1 : " text1
println "milliValue2 : " milliValue2
println "text2 : " text2
Вывод:
milliValue1 : 1600657200000
text1 : 21/09/2020T03:00:00
milliValue2 : 1600658100000
text2 : 21/09/2020T03:15:00