Подтвердить что ты не робот

Извлечение дня с даты

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

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

как я могу извлечь день месяца с даты, так как getDay() и так устарели? im используя небольшой взлом, но я не думаю, что это правильный способ.

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

Ответ 1

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

Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);

Ответ 2

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

Вот та же идея, но с помощью 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() ;

Ответ 3

Учитывая конструктор даты, используемый в вопросе

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

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

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

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

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