Если вы хотите поиграть с микросекундами, используйте 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
минут.