java - convert - date to milliseconds
Cómo convertir una cadena Fecha a largos millseconds (9)
Eche un vistazo a la clase SimpleDateFormat
que puede analizar una String
y devolver una Date
y el método getTime
de la clase Date
.
Tengo una fecha dentro de una cadena, algo así como "12 de diciembre de 2012". ¿Cómo puedo convertir esto en milisegundos (largo)?
La forma más fácil es utilizar la fecha de uso de fecha () y getTime ()
Date dte=new Date();
long milliSeconds = dte.getTime();
String strLong = Long.toString(milliSeconds);
System.out.println(milliSeconds)
Pruebe el código siguiente
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();
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 brinde la respuesta moderna a esta pregunta. En 2012, cuando se formuló la pregunta, las respuestas también publicadas en ese momento fueron buenas respuestas. Por qué las respuestas publicadas en 2016 también usan las clases obsoletas entonces SimpleDateFormat
y Date
es un poco más de 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 de usar. Puede usarlo en Android a través del ThreeTenABP, vea esta pregunta: Cómo usar ThreeTenABP en el Proyecto Android .
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 inicio del día en algún huso horario específico, especifique esa zona horaria en lugar de UTC, por ejemplo:
.atStartOfDay(ZoneId.of("Asia/Karachi"))
Como se esperaba, 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 igual, así que elija el lugar apropiado. Si no proporcionó una configuración regional, el formateador utilizará la configuración regional de la JVM, que puede funcionar en muchos casos y luego, inesperadamente, fallará un día cuando ejecute la aplicación en un dispositivo con una configuración regional diferente.
puede usar el formato simpleFecha para analizar la fecha de la cadena.
utilizando simpledateformat puede lograrlo fácilmente.
1) Primero convierte cadena a java.Fecha usando formato de fecha simple.
2) Use 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 here
SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
Date date = (Date)formatter.parse("12-December-2012");
long mills = date.getTime();
- Primero convierta una cadena en
java.util.Date
usando el SimpleDateFormat fecha - Use getTime() para obtener el recuento de milisegundos a partir de la fecha