Java вывод времени строка

Получение текущей даты и времени в Java

Как программисту на Java вам часто приходится работать с датой и временем. В этом посте мы узнаем, как узнать текущее время дня в Java-приложениях. В Java для этого есть несколько способов, и основными классами, которые обычно используют программисты, являются классы Date и Calendar . Вы можете использовать оба класса для вычисления текущего времени дня, а затем использовать класс SimpleDateFormat для форматирования времени в соответствии с вашими требованиями.

Использование Даты и Календарных Классов

Чтобы вычислить текущее время, вы создаете объект Date , укажите формат для представления текущего времени дня и, наконец, используйте класс SimpleDateFormat для форматирования указанного времени.

. . . public static void getCurrentTimeUsingDate()  . . . .

В приведенном выше коде мы создали Date объект и указали формат для времени. В строке формата нижний регистр hh представляет 12-часовой формат while mm и ss представляет минуты в часах и секунды в минутах соответственно. Также a в строке формата находится маркер am / pm. Затем мы создали SimpleDateFormat объект, инициализированный строкой форматирования, и вызвали format() метод, передающий Date объект. format() Метод возвращает текущее время в формате мы указали.

Использование класса Calendar одинаково просто. Вот код

. . . public static void getCurrentTimeUsingCalendar()  . . .

В приведенном выше коде мы вызвали getInstance() фабричный метод Calendar класса для получения Calendar объекта, а затем вызвали getTime() метод для него. Этот метод возвращает Date объект. Остальной код такой же, как я объяснил в предыдущем примере с датой. Единственное отличие, которое вы должны соблюдать, это строка формата. Здесь мы указали час как HH (верхний регистр), что даст нам время в 24-часовом формате.

CurrentTimeDateCalendar

package guru.springframework.blog.currenttime;  import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date;  public class CurrentTimeDateCalendar  public static void getCurrentTimeUsingCalendar()  >

Затем мы напишем тестовый класс.

CurrentTimeDateCalendarTest

package guru.springframework.blog.currenttime;  import org.junit.Test;  import static org.junit.Assert.*;   public class CurrentTimeDateCalendarTest < @Test public void testGetCurrentTimeUsingDate() throws Exception   @Test public void testGetCurrentTimeUsingCalendar() throws Exception  >
------------------------------------------------------- T E S T S ------------------------------------------------------- Running guru.springframework.blog.currenttime.CurrentTimeDateCalendarTest Current time of the day using Date - 12 hour format: 11:13:01 PM Current time of the day using Calendar - 24 hour format: 23:13:01 Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in guru.springframework.blog.currenttime.CurrentTimeDateCalendarTest

В настоящее время вы можете подумать, что вычисление текущего времени в Java никогда не может быть проще. Но у классов Date и Calendar есть некоторые недостатки. Когда вы начинаете разрабатывать корпоративные приложения, недостатки становятся более очевидными. Прежде всего, оба класса не являются потокобезопасными, что может привести к проблемам параллелизма. Кроме того, оба класса имеют ограничение вычисления времени только до миллисекунд. В критически важных корпоративных приложениях часто требуется представлять время с точностью до наносекунды.
Кроме того, хотя Дата Класс сам по себе не является устаревшим, из-за плохого дизайна API большинство его конструкторов и методов теперь устарели. Из-за таких проблем разработчики корпоративных приложений обратились к сторонним специализированным API даты и времени, особенно Joda-Time .

Использование java.time

Команда Oracle по спецификации Java осознала ограничения встроенного API обработки даты и времени и для обеспечения более эффективного API представила пакет java.time в новой Java SE 8. Этот проект был разработан совместно Oracle и Стивеном Коулборном, автор Joda-Time. Новый API java.time « вдохновлен Joda-Time ».

Расчет времени часового пояса по умолчанию

В пакете java.time есть несколько классов для работы с датой и временем. Давайте начнем с некоторого кода для расчета текущего времени часового пояса по умолчанию.

. . . public static void getCurrentTime()  . . .

Как вы можете заметить, код довольно прост. Мы вызвали now() метод, LocalTime который возвращает LocalTime объект. Это неизменный объект, который представляет время без даты и часовой пояс в календарной системе ISO-8601 .

-----Current time of your time zone----- Current time of the day: 23:13:01.762

В приведенном выше выводе обратите внимание, что время представлено с точностью до наносекунды.

Расчет времени другого часового пояса

Пакет java.time предоставляет классы, которые вы можете использовать для получения текущего времени другого часового пояса. Например, если вы находитесь в часовом поясе по умолчанию и хотите, чтобы текущее время дня другого часового пояса, например, America / Los_Angeles , вы можете использовать следующие классы:

  • ZoneId : представляет определенный часовой пояс.
  • DateTimeFormatter : Подобно классу SimpleDateFormat, который мы обсуждали ранее, этот класс является средством форматирования для анализа и печати объектов даты и времени.

Код для вычисления текущего времени другого часового пояса — это.

. . . public static void getCurrentTimeWithTimeZone()  . . .

В строке 4 — строке 5 мы создали ZoneId объект для представления America/Los_Angeles часового пояса, а затем получили текущее время часового пояса, вызвав now() метод, передающий ZoneId . LocalTime Объект , что now() возвращает метод имеет текущее время дня America/Los_Angeles . Из строки 6 — строки 8 мы отформатировали время в 24-часовой формат, используя DateTimeFormatter и распечатав отформатированное время.

-----Current time of a different time zone using LocalTime----- Current time of the day in Los Angeles: 16:29:23

Расчет времени другого смещения времени

Смещение времени — это количество времени в часах и минутах, добавленное или вычтенное из всемирного координированного времени (UTC) . Пакет java.time предоставляет класс ZoneOffset для расчета текущего времени дня с другим смещением времени.

Код для использования класса ZoneOffset это.

. . . public static void getCurrentTimeWithOffset()  . . .

В приведенном выше коде мы создали ZoneOffset объект в строке 4 для представления временного смещения -8: 00. В строке 5 мы создали ZoneId объект, инициализированный ZoneOffset объектом. Оставшийся код от строки 6 до строки 9 использует LocalTime объект, инициализированный с ZoneId помощью DateTimeFormatter объекта и, для форматирования времени в 12-часовом формате с помощью маркера am / pm.

-----Current time of different offset----- Current time of the day with offset -08:00: 03:29 PM

Полный код фрагментов, которые мы обсуждали, таков.

package guru.springframework.blog.currenttime;  import java.time.*; import java.time.format.DateTimeFormatter; public class CurrentTimeJava8  public static void getCurrentTimeWithTimeZone()  public static void getCurrentTimeWithOffset()  >

Давайте напишем тестовый класс, чтобы увидеть код в действии.

package guru.springframework.blog.currenttime;  import org.junit.Test;  import static org.junit.Assert.*;  public class CurrentTimeJava8Test <@Test public void testGetCurrentTime() throws Exception  @Test public void testGetCurrentTimeWithTimeZone() throws Exception  @Test public void testGetCurrentTimeWithOffset() throws Exception  >

Вывод, полученный при запуске теста с использованием Maven, показан ниже, который, очевидно, будет отличаться в зависимости от вашего текущего времени и часового пояса.

------------------------------------------------------- T E S T S ------------------------------------------------------- Running guru.springframework.blog.currenttime.CurrentTimeJava8Test -----Current time of your time zone----- Current time of the day: 06:59:52.803 -----Current time of a different time zone using LocalTime----- Current time of the day in Los Angeles: 18:29:52 -----Current time of different offset----- Current time of the day with offset -08:00: 05:29 PM Tests run: 3, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.337 sec - in guru.springframework.blog.currenttime.CurrentTimeJava8Test

Резюме

С точки зрения работы со временем в Java, этот пост только поцарапал поверхность. Пакет java.time имеет обширный набор классов, который упрощает работу с датой и временем. Однако вы также столкнетесь с классами Date и Calendar и Joda-Time API при работе с устаревшими приложениями. Но благодаря мощным функциям, встроенным в java.time , вы можете легко преобразовать свой устаревший код для вычисления даты и времени в java.time . Продолжайте изучать API java.time , который очень хорошо документирован и прост в использовании.

Помните, что когда вы используете параметры местного времени, Java проходит через JVM, чтобы общаться с любым компьютером, на котором работает. Вот как Java определяет время и локаль операций времени. Таким образом, ваш код может давать разные результаты при работе на разных машинах. В качестве предостережения, когда вы работаете с небольшими приложениями, часто вам не нужно беспокоиться о часовом поясе. Но в больших приложениях вы будете. Вам нужно, чтобы ваш код знал о часовом поясе. Многие разработчики игнорируют компонент часового пояса, а затем сталкиваются с проблемами по мере роста их приложения.

Источник

Читайте также:  Interface development in java
Оцените статью