Преобразование определенного времени даты в миллисекунды в groovy

#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