Java calendario obtener la fecha actual, sin horas, minutos, segundos y milisegundos, en milisegundos

Me gustaría obtener la fecha actual en milisegundos con sólo el año, el mes y la fecha. Pero cuando voy a utilizar este código:

Calendar cal = Calendar.getInstance();
cal.clear(Calendar.HOUR);
cal.clear(Calendar.MINUTE);
cal.clear(Calendar.SECOND);
cal.clear(Calendar.MILLISECOND);
currentDate = cal.getTimeInMillis();

Puedo obtener el tiempo en milisegundos de la hora.
¿Cómo puedo solucionar este problema?

InformationsquelleAutor just_user | 2011-10-28

5 Kommentare

  1. 49
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    currentDate = cal.getTimeInMillis();

    Hay que tener cuidado en la zona horaria de su Calendario.

    • gracias, este lo hizo!
    • entonces válida la respuesta…
    • en Android me dio el día de ayer (medianoche)
    • Hizo usted toma el cuidado de su zona horaria @Anthony?
  2. 8

    Si usted sólo quiere que este con respecto a GMT de forma explícita y sólo quiere milisegundos, puede utilizar este:

    long now = System.currentTimeMillis();
    long today = now - now % 86400000;
  3. 6

    de la javadoc:
    El HOUR_OF_DAY, HORA y AM_PM campos se maneja de manera independiente y el de la regla de resolución para el momento del día en que se aplica. Compensación de uno de los campos no se restablece la hora del día en que el valor de este Calendario. Use set(Calendar.HOUR_OF_DAY, 0) para restablecer el valor de la hora.

    cal.set(Calendar.HOUR, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);

    puede ser que necesite para configurar AM/PM así

    • Am/PM – es por eso que usted utilice el Calendario.HOUR_OF_DAY como el otro ejemplo que hace
  4. 5

    tl;dr

    LocalDate.now()

    LocalDate

    Si lo que quieres en realidad es sólo la fecha sin la hora, utilice LocalDate clase.

    La LocalDate clase representa una fecha valor solo sin la hora del día y sin zona horaria.

    Una zona de tiempo es crucial en la determinación de una fecha. Para un momento dado, la fecha varía en todo el mundo por la zona. Por ejemplo, un par de minutos después de la medianoche en París, Francia es un nuevo día, mientras todavía «ayer» en Montréal Québec.

    Especificar un en el tiempo apropiado, el nombre de la zona en el formato de continent/region, tales como America/Montreal, Africa/Casablanca, o Pacific/Auckland. No utilice nunca el 3-4 letra de la abreviatura como EST o IST como son no verdadero zonas de tiempo, no estandarizado, y ni siquiera único(!).

    ZoneId z = ZoneId.of( "America/Montreal" );
    LocalDate today = LocalDate.now( z );

    ZonedDateTime

    Si quieres una fecha con la hora del día fijado para el primer momento del día, pedir java.el tiempo para determinar ese momento para usted. No suponga que el primer momento es a las 00:00:00. Anomalías tales como Horario de verano significa, en primer momento puede ocurrir en algún otro momento, tales como las 01:00:00.

    Usar el tiempo de la zona objeto, el ZoneId, para generar un ZonedDateTime objeto.

    ZonedDateTime zdt = today.atStartOfDay( z );  //Determine the first moment of the day on this date for this time zone.

    Para ver este mismo momento, como un valor en UTC, el extracto de una Instant objeto.

    Instant instant = zdt.toInstant();

    Evitar el legado de fecha y hora de las clases

    Evitar la problemática de edad de fecha y hora de las clases, tales como Calendar. Estos son ahora legado, suplantado por el de java.clases de tiempo.


    Acerca de java.tiempo

    La java.tiempo marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la problemática de edad legado fecha y hora de las clases, tales como java.util.Fecha, Calendario, & SimpleDateFormat.

    La Joda-El Tiempo proyecto, ahora en el modo de mantenimiento, asesora de la migración a la java.tiempo clases.

    Para obtener más información, consulte la Oracle Tutorial. Y la búsqueda de Desbordamiento de Pila, hay muchos ejemplos y explicaciones. La especificación es JSR 310.

    Dónde obtener el java.clases de tiempo?

    La ThreeTen-Extra proyecto se extiende java.tiempo con clases adicionales. Este proyecto es un terreno de prueba para posibles futuras incorporaciones a java.tiempo. Usted puede encontrar algunos de clases útiles aquí como Intervalo, YearWeek, YearQuarter, y más.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea