Java date только дата

Получить дату без времени в Java

В этом коротком руководстве мы покажем, как получитьDate без времени на Java.

Мы покажем, как это сделать до и после Java 8, поскольку после выпуска API нового времени в Java 8 все немного изменилось.

2. До Java 8

До Java 8 не было прямого способа получитьDate без времени, если только мы не использовали сторонние библиотеки, такие как Joda-time.

Это потому, чтоthe Date class in Java is a representation of a specific instant in time, expressed in milliseconds. Следовательно, это делает невозможным игнорировать время наDate.

В следующих разделах мы покажем некоторые общие обходные пути для решения этой проблемы.

2.1. ИспользуяCalendar

Один из наиболее распространенных способов получитьDate без времени — этоuse the Calendar class to set the time to zero. Делая это, мы получаем чистую дату с временем, установленным в начале дня.

public static Date getDateWithoutTimeUsingCalendar()

Если мы вызываем этот метод, мы получаем такую ​​дату:

Sat Jun 23 00:00:00 CEST 2018

Как мы видим, он возвращает полную дату с нулевым временем, ноwe can’t ignore the time.

Кроме того, чтобы убедиться, что в возвращаемыхDate не задано время, мы можем создать следующий тест:

@Test public void whenGettingDateWithoutTimeUsingCalendar_thenReturnDateWithoutTime()

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

2.2. Использование форматтера

Другой способ сделать это —formatting a Date into a String without the time and then convert that String back to a Date. ПосколькуString был отформатирован без времени, для преобразованногоDate время будет установлено равным нулю.

Давайте реализуем это, чтобы увидеть, как это работает:

public static Date getDateWithoutTimeUsingFormat() throws ParseException < SimpleDateFormat formatter = new SimpleDateFormat( "dd/MM/yyyy"); return formatter.parse(formatter.format(new Date())); >

Эта реализация возвращает то же, что и метод, показанный в предыдущем разделе:

Sat Jun 23 00:00:00 CEST 2018

Опять же, мы можем использовать тест, как и раньше, чтобы убедиться, что в возвращаемыхDate нет времени.

3. Использование Java 8

С выпуском нового API времени в Java 8 появился более простой способ получить дату без времени. Одна из новых функций этого нового API заключается в том, что есть несколько классов для работы с датами со временем или без него или даже для работы только со временем.

Читайте также:  Android textview set html text

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

Давайте посмотрим на это на следующем примере:

public static LocalDate getLocalDate()

Этот метод возвращает объектLocalDate с таким представлением даты:

Как мы видим, он возвращает только датуthe time is completely ignored.

Опять же, давайте проверим его, как и раньше, чтобы убедиться, что этот метод работает должным образом:

@Test public void whenGettingLocalDate_thenReturnDateWithoutTime()

4. Заключение

В этой статье мы показали, как получитьDate без времени на Java. Сначала мы показали, как это сделать до Java 8, а также с использованием Java 8.

Как мы могли видеть в примерах, реализованных в статье, с использованиемJava 8 should be always the preferred option, поскольку он имеет специальное представление для работы с датами без времени.

Как всегда, доступен полный исходный код примеровover on GitHub.

Источник

Получить дату без времени в Java

В этом посте будет обсуждаться, как получить дату без времени в Java.

1. Использование библиотеки времени Joda

The Joda-Time библиотека date-time обеспечивает качественную замену стандартных классов даты и времени до Java SE 8. Чтобы получить дату без времени, вы можете использовать LocalDate учебный класс.

Выход (будет варьироваться):

2021-12-24

Библиотека Джода Тайм DateTimeZone класс предоставляет доступ к часовому поясу через фабричный метод forID() :

Выход (будет варьироваться):

2021-12-24

2. Использование LocalDate class

Подобно библиотеке Joda-Time, Java 8 java.time пакет включал LocalDate класс для представления даты без часового пояса.

Выход (будет варьироваться):

2021-12-24

Чтобы получить текущую дату в указанном часовом поясе, вы можете указать идентификатор зоны для LocalDate.now() метод.

Выход (будет варьироваться):

2021-12-24

3. Использование объекта Date

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

Выход (будет варьироваться):

12-24-2021

4. Использование Apache Commons Lang

The DateUtils Класс из библиотеки Apache Commons Lang предоставляет множество полезных утилит для работы с датой и временем. Вы можете назвать его truncate() метод усечения даты, как показано ниже.

Выход (будет варьироваться):

Sun Dec 24 00:00:00 PST 2021

Это все о получении даты без времени в Java.

Средний рейтинг 5 /5. Подсчет голосов: 2

Голосов пока нет! Будьте первым, кто оценит этот пост.

Сожалеем, что этот пост не оказался для вас полезным!

Читайте также:  Греческие символы в питоне

Расскажите, как мы можем улучшить этот пост?

Спасибо за чтение.

Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.

Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования 🙂

Этот веб-сайт использует файлы cookie. Используя этот сайт, вы соглашаетесь с использованием файлов cookie, нашей политикой, условиями авторского права и другими условиями. Читайте наши Политика конфиденциальности. Понятно

Источник

Class Date

Prior to JDK 1.1, the class Date had two additional functions. It allowed the interpretation of dates as year, month, day, hour, minute, and second values. It also allowed the formatting and parsing of date strings. Unfortunately, the API for these functions was not amenable to internationalization. As of JDK 1.1, the Calendar class should be used to convert between dates and time fields and the DateFormat class should be used to format and parse date strings. The corresponding methods in Date are deprecated.

Although the Date class is intended to reflect coordinated universal time (UTC), it may not do so exactly, depending on the host environment of the Java Virtual Machine. Nearly all modern operating systems assume that 1 day = 24 × 60 × 60 = 86400 seconds in all cases. In UTC, however, about once every year or two there is an extra second, called a «leap second.» The leap second is always added as the last second of the day, and always on December 31 or June 30. For example, the last minute of the year 1995 was 61 seconds long, thanks to an added leap second. Most computer clocks are not accurate enough to be able to reflect the leap-second distinction.

Some computer standards are defined in terms of Greenwich mean time (GMT), which is equivalent to universal time (UT). GMT is the «civil» name for the standard; UT is the «scientific» name for the same standard. The distinction between UTC and UT is that UTC is based on an atomic clock and UT is based on astronomical observations, which for all practical purposes is an invisibly fine hair to split. Because the earth’s rotation is not uniform (it slows down and speeds up in complicated ways), UT does not always flow uniformly. Leap seconds are introduced as needed into UTC so as to keep UTC within 0.9 seconds of UT1, which is a version of UT with certain corrections applied. There are other time and date systems as well; for example, the time scale used by the satellite-based global positioning system (GPS) is synchronized to UTC but is not adjusted for leap seconds. An interesting source of further information is the United States Naval Observatory (USNO):

Читайте также:  border-color

and the material regarding «Systems of Time» at:

which has descriptions of various different time systems including UT, UT1, and UTC.

  • A year y is represented by the integer y — 1900 .
  • A month is represented by an integer from 0 to 11; 0 is January, 1 is February, and so forth; thus 11 is December.
  • A date (day of month) is represented by an integer from 1 to 31 in the usual manner.
  • An hour is represented by an integer from 0 to 23. Thus, the hour from midnight to 1 a.m. is hour 0, and the hour from noon to 1 p.m. is hour 12.
  • A minute is represented by an integer from 0 to 59 in the usual manner.
  • A second is represented by an integer from 0 to 61; the values 60 and 61 occur only for leap seconds and even then only in Java implementations that actually track leap seconds correctly. Because of the manner in which leap seconds are currently introduced, it is extremely unlikely that two leap seconds will occur in the same minute, but this specification follows the date and time conventions for ISO C.

In all cases, arguments given to methods for these purposes need not fall within the indicated ranges; for example, a date may be specified as January 32 and is interpreted as meaning February 1.

Constructor Summary

Allocates a Date object and initializes it so that it represents the time at which it was allocated, measured to the nearest millisecond.

As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date) .

As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min) or GregorianCalendar(year + 1900, month, date, hrs, min) .

As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date, hrs, min, sec) or GregorianCalendar(year + 1900, month, date, hrs, min, sec) .

Allocates a Date object and initializes it to represent the specified number of milliseconds since the standard base time known as «the epoch», namely January 1, 1970, 00:00:00 GMT.

Источник

Оцените статью