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

时间:2018-05-18 12:24:38

标签: 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 types.

让我知道我哪里出错了。

4 个答案:

答案 0 :(得分:1)

试试这个:

    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()

希望它有所帮助......

答案 1 :(得分:1)

这有效......

String input = '201805041235040000000'

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

有点不清楚你在寻找什么。如果您只需要解析日期字符串的时间戳,则可以使用groovy扩展名Date.toTimestamp()

def ts = Date.parse("yyyyMMddHHmmssSSS", "201805041235040000000".take(17)).toTimestamp()

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

def ts = Date.parse("yyyyMMddHHmmss", "201805041235040000000".take(14)).toTimestamp()

当你说" with zone"时,你的意思是不清楚的。因此,假设您只想包含当前时区信息并生成字符串,我不会在第一时间看到您应该从日期转换为时间戳的原因(Timestamp之后是Date 3}}因为它继承自Date)。如果你只是需要拼出的时区,你可以这样做:

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