тл; д-р
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19: 24: 25.694
java.time
У Java 8 і пізніших версіях у нас є java.time, вбудований в Java 8 і новіші версії. Ці нові класи витісняють тривожні старі класи java.util.Date/.Calendar. Нові класи натхненні надзвичайно успішною рамкою Joda-Time , призначеною як її наступниця, подібною за концепцією, але переробленою. Визначено JSR 310 . Розширений проектом ThreeTen-Extra . Дивіться Підручник .
Майте на увазі, що java.time здатний до наносекундної роздільної здатності (9 десяткових знаків у частці секунди), порівняно з роздільною здатністю мілісекунди (3 десяткових знаків) обох java.util.Date & Joda-Time. Тож при форматуванні для відображення лише 3 знаків після коми ви можете приховати дані.
Якщо ви хочете усунути будь-які мікросекунди або наносекунди зі своїх даних, усічіть.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
Класи java.time за умовчанням використовують формат ISO 8601 під час аналізу / генерації рядків. A Z
в кінці короткий для Zulu
, і означає UTC .
Позначає Instant
момент на часовій шкалі в UTC з роздільною здатністю до наносекунд . Захоплення поточного моменту в Java 8 обмежується мілісекундами , при цьому нова реалізація в Java 9 охоплює до наносекунд залежно від можливостей апаратного годинника вашого комп'ютера.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Замініть T
середину пробілом, а Z
нічим - щоб отримати бажаний результат.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23: 24: 25.694
Оскільки ви не переймаєтесь тим, як включати зміщення чи часовий пояс, укажіть "місцевий" час, не пов’язаний із будь-якою конкретною місцевістю.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda-Time
Дуже успішна бібліотека Joda-Time стала натхненником для системи java.time. Доцільно переходити на java.time, коли це зручно.
Формат ISO 8601 включає мілісекунди і є за замовчуванням для бібліотеки Joda-Time 2.4.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Під час запуску…
Now: 2013-11-26T20:25:12.014Z
Крім того, ви можете запитати частку секунди за кількістю, якщо потрібно:
int millisOfSecond = myDateTime.getMillisOfSecond ();