Tengo una fecha dentro de una cadena, algo así como "12 de diciembre de 2012". ¿Cómo puedo convertir esto en milisegundos (largo)?
fuente
Tengo una fecha dentro de una cadena, algo así como "12 de diciembre de 2012". ¿Cómo puedo convertir esto en milisegundos (largo)?
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();
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
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.
Eche un vistazo a la SimpleDateFormat
clase que puede analizar ay String
devolver ay Date
el getTime
método de Date
clase.
java.util.Date
usar el formateador de fechapuede usar simpleDateFormat para analizar la fecha de la cadena.
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)
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();