Вопрос:

Тип данных Java для хранения только даты

java

4914 просмотра

8 ответа

1666 Репутация автора

Какой тип данных в Java может содержать только дату и не требует компонента времени? Например, просто хранить 12/07/2012. Я работаю с сохранением данных в / из базы данных, которая имеет тип данных только для даты, поэтому я ищу лучший эквивалентный тип данных в Java.

Автор: monda Источник Размещён: 18.06.2012 01:14

Ответы (8)


2 плюса

3786 Репутация автора

Дата урока. Он содержит метку времени UNIX. В большинстве баз данных вы также можете указать поле для хранения метки времени. Вы можете использовать DateFormat для форматирования метки времени, как вы хотите.

Автор: jn1kk Размещён: 18.06.2012 01:15

1 плюс

21471 Репутация автора

Используйте класс Date, который доступен.

Автор: Fahim Parkar Размещён: 18.06.2012 01:16

5 плюса

243601 Репутация автора

Решение

от JDK java.sql.Date::

Тонкая оболочка со значением в миллисекунду, позволяющая JDBC идентифицировать его как значение SQL DATE. Значение в миллисекундах представляет количество миллисекунд, прошедших с тех пор January 1, 1970 00:00:00.000 GMT.

Чтобы соответствовать определению SQL DATE, значения миллисекунд, обернутые java.sql.Dateэкземпляром, должны быть «нормализованы» путем установки часов, минут, секунд и миллисекунд на ноль в конкретном часовом поясе, с которым связан экземпляр.

или из JodaTime : DateMidnightили LocalDate(спасибо @cdeszaq)

DateMidnightопределяет дату, когда компонент времени фиксируется в полночь. Класс использует часовой пояс, поэтому полночь является локальной, если только не используется часовой пояс UTC.

Важно подчеркнуть, что этот класс представляет время полуночи в любой день. Обратите внимание, что полночь определяется как 00:00, то есть в самом начале дня.

Автор: Sean Patrick Floyd Размещён: 18.06.2012 01:20

1 плюс

2012 Репутация автора

Показывает, как держат только дату (без времени)

formatter = new SimpleDateFormat("dd/MM/yyyy");

Date date= new Date();

Date todayWithOutTime =formatter.parse(formatter.format(date));
Автор: tostao Размещён: 18.06.2012 01:25

1 плюс

17984 Репутация автора

К сожалению, java.util.Dateесть то, что в SQL есть имя Timestamp. Нет чистого типа только для Date, он javax.sql.Dateрасширяется, java.util.Dateи использование этого типа для манипулирования датой в Java не дает вам никаких преимуществ.

Я имею дело с этим с помощью commons-langкласса Apache DateUtils:

Date myDate = DateUtils.truncate(timestamp, Calendar.DAY_OF_MONTH);

Это удалит часть времени и оставит только часть даты.

Автор: Danubian Sailor Размещён: 18.06.2012 02:49

1 плюс

3339 Репутация автора

Используйте класс Date. Это лучший способ.

Автор: Marcus Thornton Размещён: 30.04.2013 08:11

2 плюса

3238 Репутация автора

Если вы используете Java 8, вы можете использовать java.time.LocalDate.

Автор: Johnny Lim Размещён: 02.10.2015 02:34

3 плюса

140632 Репутация автора

Другие ответы устарели.

Старые классы даты и времени общеизвестно хлопотны, и их следует избегать.

java.time

Java.time каркас встроен в Java 8 и более поздних версий. Смотрите Oracle Tutorial . Большая часть функциональности java.time перенесена в Jave 6 и 7 и далее адаптирована для Android .

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

LocalDate localDate = LocalDate.of( 2012 , 12 , 7 );

Текстовое представление

toStringМетод создает строку , используя стандартный ISO 8601 формат.

localDate.toString () → 2012-12-07

Для других форматов используйте DateTimeFormatter.

SQL

Драйверы JDBC совместимый с JDBC 4.2 может использовать getObjectи setObjectметоды непосредственно выборки / передать типы java.time , такие , как LocalDateдля типа SQL DATE.

Если ваш драйвер не может этого сделать, вернитесь к использованию типов java.sql. Новые методы были добавлены к старым классам, чтобы облегчить преобразование.

java.sql.Date sqlDate = java.sql.Date.valueOf( localDate );

И другое направление.

LocalDate localDate = sqlDate.toLocalDate();

Переполнение стека поиска

Поиск переполнения стека для многих других обсуждений и примеров использования java.time. Например, мой ответ на этот похожий вопрос .

Автор: Basil Bourque Размещён: 11.04.2016 03:43
Вопросы из категории :
32x32