Cómo obtener la fecha y hora actual en milisegundos en android [duplicate]

3 minutos de lectura

avatar de usuario
Supremo

Estoy tratando de guardar mi archivo con el nombre como fecha y hora actual en milisegundos. y mientras leo el archivo quiero leer el último. Aquí está el código

 Calendar rightNow = Calendar.getInstance();

  long offset = rightNow.get(Calendar.ZONE_OFFSET) +  rightNow.get(Calendar.DST_OFFSET);

  String sinceMidnight = Long.toString((rightNow.getTimeInMillis() + offset) %  (24 * 60 * 60 * 1000));

  return sinceMidnight+"_"+Filename;

  • bien. Pero, ¿cuál es el problema?

    – Pankaj Kumar

    13 de mayo de 2013 a las 7:32

  • @PankajKumar cómo leer el último

    – Supremo

    13 de mayo de 2013 a las 7:33

  • @Supreet-System.currentTimeMillis(); -Devuelve la hora actual del sistema en milisegundos

    – El flash

    13 de mayo de 2013 a las 7:35

  • @Pratik esto muestra un error

    – Supremo

    13 de mayo de 2013 a las 7:37

  • Prueba la solución. que he mencionado. No estoy muy seguro de por qué necesitarías la compensación. Si está utilizando este valor para recuperar la fecha, entonces setTime (su nombre de archivo) se establecerá de todos modos con el mismo valor de marca de tiempo.

    – lokoko

    13 de mayo de 2013 a las 7:44

avatar de usuario
edwin

Creo aprovechar esta funcionalidad usando Java

long time= System.currentTimeMillis();

esto devolverá la hora actual en modo de milisegundos. esto seguramente funcionará

long time= System.currentTimeMillis();
android.util.Log.i("Time Class ", " Time value in millisecinds "+time);

Aquí está mi logcat usando la función anterior

05-13 14:38:03.149: INFO/Time Class(301): Time value in millisecinds 1368436083157

Si tiene alguna duda con valor de milisegundos, compruebe Aquí

EDITAR : Zona horaria Solía ​​​​demostrar el código IST (+05:30), así que si marca milliseconds que se menciona en el registro para que coincida con el tiempo en el registro es posible que obtenga un valor diferente según la zona horaria de su sistema

EDITAR: Este es un enfoque fácil. Pero si necesita la zona horaria o cualquier otro detalle, creo que esto no será suficiente. También vea este enfoque usando la compatibilidad con la API de Android.

  • Esta es la forma menos confiable de obtener la hora actual considerando que diferentes sistemas devolverán un valor diferente. La documentación es bastante explícita al respecto.

    – León

    23 de noviembre de 2018 a las 2:13

  • @Leo espero que hayas leído mis ediciones, que es el mismo punto que mencionaste.

    – edwin

    14 de febrero de 2019 a las 8:58

avatar de usuario
sunil kumar

El problema es ese System. currentTimeMillis(); devuelve el número de milisegundos desde 1970-01-01T00:00:00Z, pero new Date() da la hora local actual. Agregando el ZONE_OFFSET y DST_OFFSET de la clase Calendario le da la hora en UTC.

Calendar rightNow = Calendar.getInstance();

// offset to add since we're not UTC

long offset = rightNow.get(Calendar.ZONE_OFFSET) +
    rightNow.get(Calendar.DST_OFFSET);

long sinceMidnight = (rightNow.getTimeInMillis() + offset) %
    (24 * 60 * 60 * 1000);

System.out.println(sinceMidnight + " milliseconds since midnight");

  • ¿En qué se diferencia esta respuesta de OP?

    –Istiaque Ahmed

    18 de junio de 2016 a las 9:42

  • @sunil kumar rightNow.getTimeInMillis() le devolverá la hora local en Milli Seconds, por lo que creo que la compensación se restará de rightNow.getTimeInMillis(); de lo contrario, esto no funcionará para las zonas horarias con (GMT+N). largo desde medianoche = (rightNow.getTimeInMillis() + offset) % (24 * 60 * 60 * 1000);

    – muak

    6 sep 2017 a las 12:49


avatar de usuario
raquel gallego

prueba esto

  Calendar c = Calendar.getInstance(); 
  int mseconds = c.get(Calendar.MILLISECOND)

una alternativa seria

 Calendar rightNow = Calendar.getInstance();

 long offset = rightNow.get(Calendar.ZONE_OFFSET) +
        rightNow.get(Calendar.DST_OFFSET);
 long sinceMid = (rightNow.getTimeInMils() + offset) %
       (24 * 60 * 60 * 1000);

  System.out.println(sinceMid + " milliseconds since midnight");

Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
int mSec = calendar.get(Calendar.MILLISECOND);

¿Ha sido útil esta solución?