Pemula pemula di sini, mencoba menambahkan larik bilangan bulat (yang dimaksudkan sebagai detik) ke larik Zaman:

Masukan sampel:

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

Keluaran yang diinginkan:

endDate = [2019-12-01 02:00:55, 2019-12-15 15:37:07]
  1. Saya perlu mengonversi TimeEpoch ke tanggal dengan format "yyyy-MM-dd hh:mm:ss"
  2. Saya perlu menambahkan "AddSeconds" ke tanggal yang diperoleh

Terima kasih!

0
Julies GQ 10 Maret 2020, 15:17

1 menjawab

Jawaban Terbaik

Anda dapat melakukan ini (saya mengubah variabel Anda untuk memulai dengan huruf kecil, karena Groovy menebak bahwa variabel huruf besar sebenarnya adalah nama kelas, sehingga dapat menyebabkan kebingungan):

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 }

Itu mengambil dua daftar Anda, dan menggabungkannya dengan transpose():

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

Kemudian untuk masing-masing ini, kami membuat instan, menambahkan detik, dan mengubahnya menjadi LocalDateTime menggunakan zona waktu sistem saat ini -- Anda perlu mempertimbangkan zona waktu

Kemudian kami mengonversinya ke format String yang Anda inginkan, dan mengeluarkannya masing-masing

0
tim_yates 10 Maret 2020, 12:57