Как разобрать метку времени с микросекундами? - PullRequest
0 голосов
/ 15 мая 2018

Я хочу проанализировать временную метку и уменьшить ее как можно меньше (лучше всего одна микросекунда). Он имеет следующий формат:

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

Теперь я могу разобрать это так: (см. Документы здесь)

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 голосов
/ 16 мая 2018

В качестве обходного пути - это будет вырезать с точностью до секунд и уменьшится на одну миллисекунду (необходимо, если отметка времени будет 000000 - миллисекунды)

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

Что оцените в '2018-15-05-23.59.58.999999'

0 голосов
/ 15 мая 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...