将日期字符串转换为时间戳,groovy

将日期字符串转换为时间戳,groovy,groovy,timestamp,Groovy,Timestamp,我有一个日期字符串,如下所示: 201805041235040000000 我想在Groovy中将其转换为带区域的时间戳。 我试过这个: def timestamp = Date.parse("yyyyMMddHHmmss", timstamp).format("yyyy-MM-dd'T'HH:mm:ssZ"); 但失败,出现错误: No signature of method: static java.util.Date.parse() is applicable for argument

我有一个日期字符串,如下所示:

201805041235040000000
我想在Groovy中将其转换为带区域的时间戳。 我试过这个:

def timestamp = Date.parse("yyyyMMddHHmmss", timstamp).format("yyyy-MM-dd'T'HH:mm:ssZ");
但失败,出现错误:

No signature of method: static java.util.Date.parse() is applicable for argument types.
告诉我哪里出了问题。

试试这个:

    String t2,st = "16/08/2007 09:04:34"
    SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss")
    Date date = sdf.parse(st)
    Timestamp timestamp = new Timestamp(date.getTime())
    t2 = timestamp.toString()
Date.parse("yyyyMMddHHmmss", timstamp?.toString()[0..13])
    .format("yyyy-MM-dd'T'HH:mm:ssZ")
希望它能帮上忙……

试试这个:

    String t2,st = "16/08/2007 09:04:34"
    SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy hh:mm:ss")
    Date date = sdf.parse(st)
    Timestamp timestamp = new Timestamp(date.getTime())
    t2 = timestamp.toString()
Date.parse("yyyyMMddHHmmss", timstamp?.toString()[0..13])
    .format("yyyy-MM-dd'T'HH:mm:ssZ")

希望对您有所帮助……

时间戳必须是字符串。试试这个:

Date.parse("yyyyMMddHHmmss", timstamp?.toString()[0..13])
    .format("yyyy-MM-dd'T'HH:mm:ssZ")

时间戳必须是字符串。试试这个:

Date.parse("yyyyMMddHHmmss", timstamp?.toString()[0..13])
    .format("yyyy-MM-dd'T'HH:mm:ssZ")

有点不清楚你在找什么。如果您在解析日期字符串时只需要一个时间戳,则可以使用groovy扩展:

其中,
take(17)
用于丢弃日期模式
yyyymmddhhmmssss
中未包含的任何尾随零。我假设三个尾随零是毫秒。如果情况并非如此:

def ts = Date.parse("yyyyMMddHHmmss", "201805041235040000000".take(14)).toTimestamp()
不清楚的是你说“带区域”是什么意思。因此,假设您只想包含当前时区信息并生成一个字符串,我看不出您首先应该将日期转换为时间戳的原因(毕竟,它是从日期继承的)。如果您只需要指定时区,您可以:

def withZone = Date.parse("yyyyMMddHHmmss", "201805041235040000000".take(14)).format("yyyy-MM-dd'T'HH:mm:ssZ")
println withZone
我在瑞典的机器上打印出:

~> groovy withTimeZone.groovy 
2018-05-04T12:35:04+0200

有点不清楚你在找什么。如果您在解析日期字符串时只需要一个时间戳,则可以使用groovy扩展:

其中,
take(17)
用于丢弃日期模式
yyyymmddhhmmssss
中未包含的任何尾随零。我假设三个尾随零是毫秒。如果情况并非如此:

def ts = Date.parse("yyyyMMddHHmmss", "201805041235040000000".take(14)).toTimestamp()
不清楚的是你说“带区域”是什么意思。因此,假设您只想包含当前时区信息并生成一个字符串,我看不出您首先应该将日期转换为时间戳的原因(毕竟,它是从日期继承的)。如果您只需要指定时区,您可以:

def withZone = Date.parse("yyyyMMddHHmmss", "201805041235040000000".take(14)).format("yyyy-MM-dd'T'HH:mm:ssZ")
println withZone
我在瑞典的机器上打印出:

~> groovy withTimeZone.groovy 
2018-05-04T12:35:04+0200
这很有效

String input = '201805041235040000000'

String timestamp = Date.parse('yyyyMMddHHmmss', input).format("yyyy-MM-dd'T'HH:mm:ssZ")
这很有效

String input = '201805041235040000000'

String timestamp = Date.parse('yyyyMMddHHmmss', input).format("yyyy-MM-dd'T'HH:mm:ssZ")

它看起来像一个时间戳“yyyyMMddhhmmss,mmmuuun”它看起来像一个时间戳“yyymmddhhmmss,mmmuuun”很难从问题中分辨出你真正在寻找什么,但代码是有效的,我认为可能与你问的方法一致。很难从问题中分辨出你真正在寻找什么,但这段代码是有效的,我认为这可能与您所要求的方法一致。