Quiero obtener la Fecha en MM/DD/YY formato de una marca de tiempo.

He utilizado el siguiente método, pero no da salida adecuada

final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(Long.parseLong(1306249409));    
Log.d("Date--",""+cal.DAY_OF_MONTH);    
Log.d("Month--",""+cal.MONTH);    
Log.d("Year--",""+cal.YEAR);

Pero su da la salida como la siguiente

Fecha–5
Mes–2
Año-1

La fecha correcta es el 24 de Mayo de 2010 fecha – 1306249409

Nota – hora se recibe por un servicio que se utiliza en mi aplicación.

  • Hace Android han SimpleDateFormat?
  • es que realmente el 24 de Mayo de 2010, 2011?
InformationsquelleAutor Mohit Kanada | 2011-05-25

7 Comentarios

  1. 23

    Mejor Enfoque

    Simplemente Utilizar SimpleDateFormat

    new SimpleDateFormat("MM/dd/yyyy").format(new Date(timeStampMillisInLong));

    Error en su Enfoque

    DAY_OF_MONTH ,MONTH, etc .. son un constante int valor utilizado por Calendar clase
    internamente

    Puede obtener de la fecha representada por cal por cal.get(Calendar.DATE)

    • Por favor, no utilice nunca minúsculas l para indicar que el número es un literal long; siempre utilice mayúsculas L. El l se parece demasiado a el dígito 1.
  2. 7

    Lo que está mal:

    Calendar.DAY_OF_MONTH, Calendar.MONTH etc son constantes estáticas utiliza para acceder a los campos específicos. (Que permanecerá constante, no importa lo que setTimeInMillis que usted proporcione.)


    Cómo resolverlo:

    Para conseguir esos campos particulares, puede utilizar el .get(int field)en el método de la, como este:

    Log.d("Month--",""+cal.get(Calendar.MONTH));

    Como otros han señalado, existen los métodos más convenientes para el formato de una fecha para el registro. Usted podría utilizar, por ejemplo, el SimpleDateFormat, o, como yo suelo hacer cuando el registro, de un formato de cadena y String.format(formatStr, Calendar.getInstance()).

    • Gracias por su respuesta, me cambian como por su respuesta, pero luego me sale el Mes – 0 , Año de la década de 1970 y el Día 01
    • Kanada, algunos campos son 0-indexada. @Grzegorz Szpetkowski respuesta toma esto en cuenta. Usted probablemente incluso mejor, por ejemplo, utilizar SimpleDateFormat o la String.format método.
  3. 3
            Date date = new Date(System.currentTimeMillis());
        SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy");
        String s = formatter.format(date);
        System.out.println(s);
  4. 2
    TimeZone utc = TimeZone.getTimeZone("UTC"); //avoiding local time zone overhead
    final Calendar cal = new GregorianCalendar(utc);
    
    //always use GregorianCalendar explicitly if you don't want be suprised with
    //Japanese Imperial Calendar or something
    
    cal.setTimeInMillis(1306249409L*1000); //input need to be in miliseconds
    
    Log.d("Date--",""+cal.get(Calendar.DAY_OF_MONTH));
    
    Log.d("Month--",""+cal.get(Calendar.MONTH) + 1); //it starts from zero, add 1
    
    Log.d("Year--",""+cal.get(Calendar.YEAR));
    • +1, responde a la pregunta bien.
  5. 1

    Java utiliza el número de milisegundos desde el 1 de enero de 1970 para representar los tiempos. Si calcula el tiempo representado por 1306249409 milisegundos, usted descubrirá que sólo 362 días, por lo que sus suposiciones son erróneas.

    Por otra parte, cal.DAY_OF_MONTH mantiene una constante. Uso cal.get(Calendar.DAY_OF_MONTH) para obtener el día de mes (lo mismo para otras partes de la fecha).

  6. 0

    uso String.format que es capaz de convertir tiempo (milisegundos) para cadena de fecha y hora en diferentes formatos:

        String str;
        long time = 1306249409 * 1000L;  //milliseconds
        str = String.format("%1$tm/%1$td/%1$ty", time);  //05/24/11
        str = String.format("%tF", time);                //2011-05-24 (ISO 8601)
        str = String.format("Date--%td", time);          //Date--24
        str = String.format("Month--%tm", time);         //Month--05
        str = String.format("Year--%ty", time);          //Year--11

    documentación: cadena de formato.

Dejar respuesta

Please enter your comment!
Please enter your name here