如何用微秒解析时间戳?

时间:2018-05-15 13:45:05

标签: groovy

我想解析时间戳并尽可能减少它(最好是1微秒)。它具有以下格式:

String source = "2018-15-05-23.59.59.999123"
String target = "2018-15-05-23.59.59.999122"

现在我可以解析它:(see the docs here)

Date a = Date.parse("yyyy-MM-dd-HH.mm.ss.SSS","2018-15-05-23.59.59.999123");
        a.setTime(a.getTime()-1);
        a.format("yyyy-MM-dd-HH.mm.SSS000")}'

但这是解析123毫秒,而我正在失去微秒:2018-15-05-23.59.59.122000

有没有办法呢?

2 个答案:

答案 0 :(得分:1)

如果您想玩微秒,请改用java.time.LocalDateTime。请考虑以下示例:

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

String source = "2018-15-05-23.59.59.999123000"
String format = 'yyyy-dd-MM-HH.mm.ss.n'

LocalDateTime dateTime = LocalDateTime.parse(source, DateTimeFormatter.ofPattern(format))

println dateTime
println dateTime.minus(1, ChronoUnit.MICROS)

输出:

2018-05-15T23:59:59.999123
2018-05-15T23:59:59.999122

java.util.Date案例

使用java.util.Date时,限制为毫秒。看一下这个例子:

String source = "2018-15-05-23.59.59.999123"
String format = 'yyyy-dd-MM-HH.mm.ss.SSSSSS'

def date = Date.parse(format, source)
println date.format(format)

打印到控制台的内容是什么?

2018-16-05-00.16.38.000123

毫秒限制为3个字符长度,999123毫秒等于16.65205分钟。

答案 1 :(得分:0)

作为一种解决方法 - 这将精确地从秒减少并减少一毫秒(如果时间戳为[DataAccessAttribute(Disable=true)] public ActionResult Index() { return View(); } 则需要 - 毫秒)

<'a', 111>  
<'b', 567>  
<'c', 956>  
<'d', 222>  
<'e', 111>  
<'f', 222>  
<'h', 222>  
<'i', 492> 

评估为000000

的内容