Добавьте секунды и эпохи, чтобы получить дату и время - PullRequest
0 голосов
/ 10 марта 2020

Учащийся здесь, начинающий, пытается добавить массив целых чисел (которые означают секунды) к массиву эпох:

Пример ввода:

AddSeconds = [3,4]
TimeEpoch = [1575165652000, 1576424223000] // Which are 2019-12-01 02:00:52 and 2019-12-15 15:37:03

Требуемый вывод:

endDate = [2019-12-01 02:00:55, 2019-12-15 15:37:07]
  1. Мне нужно преобразовать TimeEpoch в даты в формате «гггг-мм-дд чч: мм: сс»
  2. Мне нужно добавить «AddSeconds» к полученным датам

Спасибо!

1 Ответ

0 голосов
/ 10 марта 2020

Вы можете сделать это (я изменил ваши переменные, чтобы они начинались с буквы в нижнем регистре, потому что Groovy предполагает, что переменные в верхнем регистре на самом деле являются именами классов, что может вызвать путаницу):

addSeconds = [3,4]
timeEpoch = [1575165652000, 1576424223000]

import java.time.*
import java.time.format.*

def formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss")

def datesAsStrings = [addSeconds, timeEpoch]
    .transpose()
    .collect { a, t -> Instant.ofEpochMilli(t).plusSeconds(a).atZone(ZoneId.systemDefault()).toLocalDateTime() }
    .collect { d -> d.format(formatter) }

datesAsStrings.each { println it }

Это берет ваши два списка и объединяет их вместе с transpose():

[ [3, 1575165652000], [4, 1576424223000] ]

Затем для каждого из них мы создаем момент, добавляем секунды и конвертируем его в LocalDateTime, используя текущий часовой пояс системы - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Затем мы конвертируем их в желаемый формат строки и распечатываем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...