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();
}
Jon Lin
fuente
16
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
Ram kiran
fuente
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.

Ole VV
fuente
9

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

Averroes
fuente
7
  • Primero convierta la cadena para java.util.Dateusar el formateador de fecha
  • Use getTime () para obtener el recuento de milisegundos desde la fecha
Dmitriy Tarasov
fuente
3

puede usar simpleDateFormat para analizar la fecha de la cadena.

XepterX
fuente
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)
Saranga kapilarathna
fuente
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í

Ankit jain
fuente
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();
subrahmanyam boyapati
fuente