我有一个日期字符串如下:
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.
让我知道我哪里出错了。
答案 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