2010-04-12 14 views
18

recibo una marca de tiempo de un servicio de jabón en milisegundos .. entonces lo hagodía extracto de Fecha

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

cómo puedo extraer el día del mes de la fecha, ya que getDay() y por lo tanto están en desuso? im usando un pequeño corte, pero no creo que esta es la forma correcta ..

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

Utilice [la clase Calendario Java para esto] (http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html). – zsong

Respuesta

35

Uso Calendar para esto:

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

Dada la Date constructor utilizado en la pregunta

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

El método mar.getEventDate() devuelve un long que representa el número especificado de milisegundos desde el tiempo base estándar conocido como "la época", es decir, el 1 de enero de 1970, 00:00:00 GMT.

En Java 8, se puede extraer el día del mes a partir de este valor, asumiendo UTC, con

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

Tenga en cuenta también que la respuesta dada por Cletus asuma que mar.getEventDate() devuelve un objeto Date que no es el caso en la pregunta.

2

El Answer de Lokni es correcto.

Aquí está la misma idea pero usando 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() ; 
Cuestiones relacionadas