我想解析时间戳并尽可能减少它(最好是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
有没有办法呢?
答案 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