Tengo una fecha dentro de una cadena, algo así como "12 de diciembre de 2012". ¿Cómo puedo convertir esto en milisegundos (largo)?
Tengo una fecha dentro de una cadena, algo así como "12 de diciembre de 2012". ¿Cómo puedo convertir esto en milisegundos (largo)?
Respuestas:
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();
}
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 SimpleDateFormat
y Date
es 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.
java.util.Date
usar el formateador de fechaLa 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)
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í
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();