Cómo convertir una fecha de cadena en milisegundos largos


Respuestas:


154

Usando SimpleDateFormat

String string_date = "12-December-2012";

SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
try {
    Date d = f.parse(string_date);
    long milliseconds = d.getTime();
} catch (ParseException e) {
    e.printStackTrace();
}

16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();

11

Ya es hora de que alguien proporcione la respuesta moderna a esta pregunta. En 2012, cuando se hizo la pregunta, las respuestas publicadas también fueron buenas respuestas. Por qué las respuestas publicadas en 2016 también usan las clases entonces obsoletas SimpleDateFormaty Datees un poco más un misterio para mí. java.time, la API de fecha y hora moderna de Java, también conocida como JSR-310, es mucho más agradable para trabajar. Puede usarlo en Android a través de ThreeTenABP, consulte esta pregunta: Cómo usar ThreeTenABP en Android Project .

Para la mayoría de los propósitos, recomiendo usar los milisegundos desde la época al comienzo del día en UTC . Para obtener estos:

    DateTimeFormatter dateFormatter
            = DateTimeFormatter.ofPattern("d-MMMM-uuuu", Locale.ENGLISH);
    String stringDate = "12-December-2012";
    long millisecondsSinceEpoch = LocalDate.parse(stringDate, dateFormatter)
            .atStartOfDay(ZoneOffset.UTC)
            .toInstant()
            .toEpochMilli();
    System.out.println(millisecondsSinceEpoch);

Esto imprime:

1355270400000

Si necesita la hora al comienzo del día en una zona horaria específica, especifique esa zona horaria en lugar de UTC, por ejemplo:

            .atStartOfDay(ZoneId.of("Asia/Karachi"))

Como era de esperar, esto da un resultado ligeramente diferente:

1355252400000

Otro punto a tener en cuenta, recuerde proporcionar una ubicación a su DateTimeFormatter. Tomé diciembre como inglés, hay otros idiomas en los que ese mes se llama igual, así que elija el lugar adecuado usted mismo. Si no proporcionó una configuración regional, el formateador usaría la configuración regional de la JVM, que puede funcionar en muchos casos, y luego fallará inesperadamente un día cuando ejecute su aplicación en un dispositivo con una configuración regional diferente.


9

Eche un vistazo a la SimpleDateFormatclase que puede analizar ay Stringdevolver ay Dateel getTimemétodo de Dateclase.



3

puede usar simpleDateFormat para analizar la fecha de la cadena.


1

La forma más fácil es usar la fecha usando Date () y getTime ()

    Date dte=new Date();
    long milliSeconds = dte.getTime();
    String strLong = Long.toString(milliSeconds);
    System.out.println(milliSeconds)

1

usando simpledateformat puede lograrlo fácilmente.

1) Primero convierta la cadena a java.Date usando simpledateformatter.

2) Utilice el método getTime para obtener el recuento de milisegundos desde la fecha

 public class test {
      public static void main(String[] args) {
      String currentDate = "01-March-2016";
      SimpleDateFormat f = new SimpleDateFormat("dd-MMM-yyyy");
     Date parseDate = f.parse(currentDate);
     long milliseconds = parseDate.getTime();
  }
        }

más Ejemplo haga clic aquí


0

Prueba el siguiente código

        SimpleDateFormat f = new SimpleDateFormat("your_string_format", Locale.getDefault());
        Date d = null;
        try {
            d = f.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        long timeInMillis = d.getTime();
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.