java.time
Быстрое написание:
LocalDate.parse(
"03/12/2012" ,
DateTimeFormatter.ofPattern( "MM/dd/uuuu" )
).toString()
Ваш желаемый результат соответствует ISO 8601 стандарт для форматирования строк даты и времени.Классы java.time используют эти стандартные форматы при разборе и генерации строк, представляющих их значение.
Класс java.time.LocalDate
встроен в Java 8 и более поздние версии и представляет значение только для датыбез времени суток и без часового пояса.
Большая часть функциональности java.time перенесена на Java 6 & 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Быстрее всего выполнить?
Если мы кешируем DateTimeFormatter
, стоимость каждого разбора строки для генерации-a-string занимает треть микросекунды, 300-400 наносекунд, при работе в NetBeans 8.2 под Java 8 Update 111 на MacBook Pro (Retina, 15-дюймовый, конец 2013 г.) (процессор Intel Core i7 с частотой 2,3 ГГц) (16GB 1600 МГц DDR3) (macOS El Capitan).
DateTimeFormatter f = DateTimeFormatter.ofPattern ( "MM/dd/uuuu" );
int limit = 100_000_000; // Number of iterations of parsing a string to generate a string.
long start = System.nanoTime ();
for ( int i = 0 ; i < limit ; i ++ ) {
String s = LocalDate.parse ( "03/12/2012" , f ).toString ();
}
long stop = System.nanoTime ();
long elapsedNanos = ( stop - start );
long elapsedSeconds = TimeUnit.NANOSECONDS.toSeconds ( elapsedNanos );
long eachNanos = ( elapsedNanos / limit );
System.out.println ( "For limit of " + limit + " took seconds: " + elapsedSeconds + " and each iteration took nanoseconds: " + eachNanos );
Для ограничения 100000000 потребовалось секунд: 33, а каждая итерация занимала наносекунды: 332
Создание экземпляра DateTimeFormatter
, кажется, занимает около 200 наносекунд, почти удваиваяВремя выполнения.Измените одну строку кода выше, чтобы заменить аргумент f
.
String s = LocalDate.parse ( "03/12/2012" , DateTimeFormatter.ofPattern ( "MM/dd/uuuu" ) ).toString ();
Для ограничения 100000000 секунд потребовалось: 54, а каждая итерация заняла наносекунды: 542
О java.time
java.time Framework встроен в Java 8 и более поздние версии.Эти классы вытесняют проблемные старые унаследованные классы даты и времени, такие как java.util.Date
, Calendar
, & SimpleDateFormat
.
Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial .И поиск переполнения стека для многих примеров и объяснений.Спецификация: 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
и more .