如何以groovy将yyyy-MM-dd HH:mm:ss.SSS
格式的给定日期转换为yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
格式
例如,给定的日期为2019-03-18 16:20:05.6401383
。我希望将其转换为2019-03-18T16:20:05.6401383Z
这是使用的代码:
def date = format1.parse("2019-03-18 16:20:05.6401383");
String settledAt = format2.format(date)
log.info ">>> "+*date*+" "+*settledAt*
结果以某种方式更改了日期:Mon Mar 18 18:06:46 EDT 2019
和2019-03-18T18:06:46.383Z
提前感谢所有答案。
答案 0 :(得分:1)
如果您使用的是Java 8+和Groovy 2.5+,我将使用新的Date / Time API:
import java.time.*
def date = LocalDateTime.parse('2019-03-18 16:20:05.6401383', 'yyyy-MM-dd HH:mm:ss.nnnnnnn')
String settledAt = date.format(/yyyy-MM-dd'T'HH:mm:ss.nnnnnnn'Z'/)
这是假设输入日期的时区为“ Zulu”。
答案 1 :(得分:0)
这是Java的功能
def date = Date.parse("yyyy-MM-dd HH:mm:ss.SSS","2019-03-18 16:20:05.6401383")
返回
Mon Mar 18 18:06:46 EET 2019
java仅处理毫秒数SSS
(秒后3位数字)的问题
但是您要提供7位数的数字6401383
作为解决方法,请使用正则表达式删除多余的数字:
def sdate1 = "2019-03-18 16:20:05.6401383"
sdate1 = sdate1.replaceAll( /\d{3}(\d*)$/, '$1') //keep only 3 digits at the end
def date = Date.parse("yyyy-MM-dd HH:mm:ss.SSS",sdate1)
def sdate2 = date.format("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")