Ответ 1
Используйте Calendar
для этого:
Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
Я получаю временную метку от мыльной службы в миллисекундах.. так что я делаю
Date date = new Date(mar.getEventDate());
как я могу извлечь день месяца с даты, так как getDay() и так устарели? im используя небольшой взлом, но я не думаю, что это правильный способ.
SimpleDateFormat sdf = new SimpleDateFormat("dd");
int day = Integer.parseInt(sdf.format(date));
Используйте Calendar
для этого:
Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
Ответ от 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() ;
Учитывая конструктор даты, используемый в вопросе
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
, что не относится к вопросу.