Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改“中的给定日期”;yyyy-MM-dd HH:MM:ss.SSS“;格式为“;yyyy-MM-dd';T';HH:mm:ss.SSS';Z";groovy中的格式_Groovy_Ready Api - Fatal编程技术网

如何更改“中的给定日期”;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如果您有一个解决问题的有效解决方案,可以添加您自己的答案(甚至投票)。它将帮助其他人找到问题。