извлекать день из даты - PullRequest
       28

извлекать день из даты

19 голосов
/ 12 апреля 2010

Я получаю метку времени от службы SOAP в миллисекундах. Итак, я делаю это:

Date date = new Date( mar.getEventDate() );

Как извлечь день месяца из даты, поскольку такие методы, как Date::getDay(), устарели?

Я использую небольшой взлом, но я не думаю, что это правильный способ получить день месяца.

SimpleDateFormat sdf = new SimpleDateFormat( "dd" );
int day = Integer.parseInt( sdf.format( date ) );

Ответы [ 3 ]

36 голосов
/ 12 апреля 2010

Используйте Calendar для этого:

Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
2 голосов
/ 14 июня 2015

Обновление: Проект Joda-Time теперь находится в режиме обслуживания , и команда рекомендует перейти на java.time классы. См. Учебник для Oracle .

См. правильный ответ Ортомалы Локни с использованием современных java.time классов. Я оставляю этот устаревший ответ нетронутым как история.


Ответ Локни правильный.

Вот та же идея, но с использованием Joda-Time 2.8.

long millisSinceEpoch = mar.getEventDate() ;
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ) ;  // Or DateTimeZone.UTC
LocalDate localDate = new LocalDate( millisSinceEpoch , zone ) ;
int dayOfMonth = localDate.getDayOfMonth() ;
1 голос
/ 14 июня 2015

С учетом конструктора Date , используемого в вопросе

Date date = new Date(mar.getEventDate());

Метод mar.getEventDate() возвращает long, представляющее указанное количество миллисекунд со стандартного базового времени, известного как «эпоха», а именно 1 января 1970 года, 00:00:00 по Гринвичу.

Java 8 и более поздние версии

В Java 8 вы можете извлечь день месяца из этого значения, предполагая UTC, с помощью

LocalDateTime.ofEpochSecond(mar.getEventDate(),0,ZoneOffset.UTC).getDayOfMonth();

Обратите внимание, что в ответе, представленном cletus, предполагается, что mar.getEventDate() возвращает объект Date, которого нет в данном вопросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...