ТЛ; др
Вы запрашиваете долю секунды от текущего времени как количество миллисекунд ( не считая от эпохи).
Instant.now() // Get current moment in UTC, then…
.get( ChronoField.MILLI_OF_SECOND ) // interrogate a `TemporalField`.
2017-04-25T03: 01: 14.113Z → 113
- Получите долю секунды в наносекундах (миллиардах).
- Разделите на тысячу, чтобы сократить до миллисекунд (тысяч).
Посмотрите, как этот код запускается вживую на IdeOne.com .
Использование java.time
Современный способ - это классы java.time.
Захватите текущий момент в формате UTC.
Instant.now()
Используйте этот Instant.get
метод, чтобы узнать значение a TemporalField
. В нашем случае TemporalField
мы хотим ChronoField.MILLI_OF_SECOND
.
int millis = Instant.now().get( ChronoField.MILLI_OF_SECOND ) ; // Get current moment in UTC, then interrogate a `TemporalField`.
Или посчитайте сами.
Скорее всего, вы спрашиваете об этом для определенного часового пояса. Доля секунды, вероятно, будет такой же, как и с, Instant
но существует так много аномалий с часовыми поясами, что я не решаюсь делать это предположение.
ZonedDateTime zdt = ZonedDateTime.now( ZoneId.of( "America/Montreal" ) ) ;
Допросите за доли секунды. В вопросе запрашиваются миллисекунды , но классы java.time используют более точное разрешение наносекунд . Это означает, что количество наносекунд будет варьироваться от 0 до 999 999 999.
long nanosFractionOfSecond = zdt.getNano();
Если вам действительно нужны миллисекунды, обрежьте более точные данные, разделив их на миллион. Например, полсекунды - это 500000000 наносекунд, а также 500 миллисекунд.
long millis = ( nanosFractionOfSecond / 1_000_000L ) ; // Truncate nanoseconds to milliseconds, by a factor of one million.
О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как java.util.Date
, Calendar
, и SimpleDateFormat
.
Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Где взять классы java.time?
- Java SE 8 и SE 9 и новее
- Встроенный.
- Часть стандартного Java API со встроенной реализацией.
- В Java 9 добавлены некоторые незначительные функции и исправления.
- Java SE 6 и SE 7
- Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport .
- Android
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как Interval
, YearWeek
, YearQuarter
, и более .
[0, 999]
, правильно? @thinksteep прочитал последнее предложение.