тл; д-р
Ви запитуєте частку секунди поточного часу як кількість мілісекунд ( не рахуючи з епохи).
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();
Якщо ви справді хочете мілісекунди, обріжте найтонші дані, поділивши їх на мільйон. Наприклад, півтори секунди - 500 000 000 наносекунд, а також 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 . І шукайте переповнення стека за багатьма прикладами та поясненнями. Специфікація - JSR 310 .
Де отримати класи java.time?
- Java SE 8 та SE 9 та новіші версії
- Вбудований.
- Частина стандартного Java API з пакетною реалізацією.
- Java 9 додає деякі незначні функції та виправлення.
- Java SE 6 і SE 7
- Android
Проект ThreeTen-Extra розширює java.time додатковими класами. Цей проект є доказом можливих майбутніх доповнень до java.time. Тут ви можете знайти кілька корисних занять, наприклад Interval
,YearWeek
, YearQuarter
, і більш .
[0, 999]
, правильно? @thinksteep прочитав останнє речення.