Datetime 将日期解析为";yyyy-MM-dd';T';00:00:00“;使用Groovy

Datetime 将日期解析为";yyyy-MM-dd';T';00:00:00“;使用Groovy,datetime,groovy,soapui,datetime-format,Datetime,Groovy,Soapui,Datetime Format,我试图将日期格式“2017-12-18T20:41:06.136Z”解析为“2017-12-18'T'00:00:00” 显示错误: java.text.ParseException:不可解析日期:“2017-12-18T20:46:06:234Z”第16行错误 这一行给出了错误: date1 = new SimpleDateFormat("yyyy-MM-dd'T'00:00:00").parse(currentDate) 如果只需要解析部分日期,请使用以下语法: Date.parse("

我试图将日期格式“2017-12-18T20:41:06.136Z”解析为“2017-12-18'T'00:00:00”

显示错误:

java.text.ParseException:不可解析日期:“2017-12-18T20:46:06:234Z”第16行错误

这一行给出了错误:

date1 =  new SimpleDateFormat("yyyy-MM-dd'T'00:00:00").parse(currentDate)

如果只需要解析部分日期,请使用以下语法:

Date.parse("yyyy-MM-dd'T'HH:mm:ss",'2017-12-18T16:05:58bla-bla')

如果只需要解析部分日期,请使用以下语法:

Date.parse("yyyy-MM-dd'T'HH:mm:ss",'2017-12-18T16:05:58bla-bla')

为了避免上述错误,请使用下面的语句
Date.parse(..)

您应该能够实现您正试图使用下面的脚本

//Change timezone if needed 
def tz = 'IST'  
TimeZone.setDefault(TimeZone.getTimeZone(tz))

def dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
def dateString = "2017-12-18T20:41:06.136Z"

Calendar calendar = Calendar.getInstance()
calendar.with {
  time = Date.parse(dateFormat,dateString)
  set(Calendar.HOUR_OF_DAY, 0)
  set(Calendar.MINUTE, 0)
  set(Calendar.SECOND, 0)     
  set(Calendar.MILLISECOND, 0)
}
log.info calendar.time.format(dateFormat)

您可以快速在线尝试相同的方法

为了避免出现上述错误,请使用下面的语句
Date.parse(…)

您应该能够实现您正试图使用下面的脚本

//Change timezone if needed 
def tz = 'IST'  
TimeZone.setDefault(TimeZone.getTimeZone(tz))

def dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
def dateString = "2017-12-18T20:41:06.136Z"

Calendar calendar = Calendar.getInstance()
calendar.with {
  time = Date.parse(dateFormat,dateString)
  set(Calendar.HOUR_OF_DAY, 0)
  set(Calendar.MINUTE, 0)
  set(Calendar.SECOND, 0)     
  set(Calendar.MILLISECOND, 0)
}
log.info calendar.time.format(dateFormat)

您可以快速在线尝试相同的方法,在Java 8上运行Groovy可以让您访问更好的日期/时间类。。。您只需执行以下操作:

import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

String result = ZonedDateTime.parse("2017-12-18T20:41:06.136Z")
    .truncatedTo(ChronoUnit.DAYS)
    .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)

在Java8上运行Groovy可以让您访问更好的日期/时间类。。。您只需执行以下操作:

import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit

String result = ZonedDateTime.parse("2017-12-18T20:41:06.136Z")
    .truncatedTo(ChronoUnit.DAYS)
    .format(DateTimeFormatter.ISO_LOCAL_DATE_TIME)

您在Java 8上运行吗?@tim_-yates是的…这与Java版本有关。@rAJ,请查看下面的解决方案是否有助于解决此问题。否,但Java 8的日期类比Java util date好得多您在Java 8上运行吗?@tim_-yates是的…这与Java版本有关。@rAJ,请查看下面的解决方案是否有助于解决此问题。否,但是Java8的日期类比JavaUtilDatePerfect好得多。谢谢:)仅供参考:这段代码使用了麻烦的旧日期时间类,这些类现在是遗留的,完全被现代的java.time类所取代。看,太好了。谢谢:)仅供参考:这段代码使用了麻烦的旧日期时间类,这些类现在是遗留的,完全被现代的java.time类所取代。请参阅。最好将类用于UTC值。使用
ZonedDateTime
用于您拥有完整时区的情况,例如
Europe/Paris
Africa/Casablanca
。最好将类用于UTC值。使用
ZonedDateTime
作为您的完整时区,例如
Europe/Paris
Africa/Casablanca