如何更改“中的给定日期”;yyyy-MM-dd HH:MM:ss.SSS“;格式为“;yyyy-MM-dd';T';HH:mm:ss.SSS';Z";groovy中的格式
如何将如何更改“中的给定日期”;yyyy-MM-dd HH:MM:ss.SSS“;格式为“;yyyy-MM-dd';T';HH:mm:ss.SSS';Z";groovy中的格式,groovy,ready-api,Groovy,Ready Api,如何将yyyy-MM-dd HH:MM:ss.SSS格式中的给定日期转换为groovy中的yyy-MM-dd'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(dat
yyyy-MM-dd HH:MM:ss.SSS
格式中的给定日期转换为groovy中的yyy-MM-dd'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:06:46美国东部夏令时2019
&2019-03-18T18:06:46.383Z
提前感谢您提供的所有答案。这是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
作为解决方法,请使用regexp删除额外数字:
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'")
如果您使用的是Java 8+和Groovy 2.5+,我将使用新的日期/时间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'/)
这是假定输入日期有一个“祖鲁”时区。谢谢,bdkosher,但没有按原样工作。但是,我根据LocalDateTime.parse找到了使其工作的方法。@user10829672如果您有一个解决问题的有效解决方案,可以添加您自己的答案(甚至投票)。它将帮助其他人找到问题。