Cómo convertir una fecha de cadena a milseconds largos


Tengo una fecha dentro de una cadena, algo así como "12-December-2012". ¿Cómo puedo convertir esto en milisegundos (largo)?

Author: Ole V.V., 2012-09-18

9 answers

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();
}
 120
Author: Jon Lin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-19 12:53:06
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
 14
Author: Ram kiran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-18 08:59:49

Echa un vistazo a la clase SimpleDateFormat que puede analizar a String y devolver a Date y el método getTime de la clase Date.

 9
Author: Averroes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-18 08:57:47
  • Primero convierte la cadena a java.util.Date usando date formatter
  • Use getTime () para obtener el recuento de milisecs a partir de la fecha
 7
Author: Dmitriy Tarasov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-18 08:59:31

Ya es hora de que alguien proporcione la respuesta moderna a esta pregunta. En 2012, cuando se hizo la pregunta, las respuestas también se publicaron en ese entonces eran buenas respuestas. ¿Por qué las respuestas publicadas en 2016 también utilizan las clases entonces obsoletas SimpleDateFormat y Date es un poco más de un misterio para mí. java.time, la moderna API de fecha y hora de Java también conocida como JSR-310, es mucho más agradable trabajar con ella. Puede usarlo en Android a través del ThreeTenABP, vea esta pregunta: Cómo usar ThreeTenABP en Android Proyecto.

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

    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 inicio del día en alguna 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 configuración regional a su DateTimeFormatter. Tomé Diciembre para ser inglés, hay otros idiomas donde ese mes se llama lo mismo, así que por favor elija el lugar adecuado usted mismo. Si no proporcionaste una configuración regional, el formateador usaría la configuración regional de la JVM, que puede funcionar en muchos casos, y luego fallaría inesperadamente un día cuando ejecutes tu aplicación en un dispositivo con una configuración regional diferente.

 4
Author: Ole V.V.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-22 07:52:11

Puede usar el formato SimpleDateFormat para analizar la fecha de la cadena.

 3
Author: XepterX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-18 08:58:32

Usando simpledateformat puedes lograrlo fácilmente.

1) Primero convierte string a java.Fecha usando simpledateformatter.

2) Utilice el método getTime para obtener el recuento de milisegundos a partir de 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 en aquí

 1
Author: Ankit jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-02 17:49:46

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)
 0
Author: Saranga kapilarathna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-03 05:59:50

Intente debajo del 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();
 0
Author: subrahmanyam boyapati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-19 12:06:37