Código de Java para obtener la hora actual

Estoy buscando código en java para buscar o sincronizar el tiempo de mi sistema local de PC en mi aplicación.

Prueba esto:

 import java.text.SimpleDateFormat; import java.util.Calendar; public class currentTime { public static void main(String[] args) { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); System.out.println( sdf.format(cal.getTime()) ); } } 

Puede formatear SimpleDateFormat de la manera que desee. Para cualquier información adicional que pueda consultar en api java:

SimpleDateFormat

Calendario

Ambos

new java.util.Date()

y

System.currentTimeMillis()

le dará el tiempo del sistema actual.

tl; dr

 Instant.now() // UTC 

…o…

 ZonedDateTime.now( // Specify time zone. ZoneId.of( "Pacific/Auckland" ) ) 

Detalles

Las clases java.util.Date / .Calendar son notoriamente problemáticas. Evítales. Ahora son heredados, suplantados por el marco java.time .

En su lugar, use cualquiera de los siguientes:

  • java.time
    Integrado con Java 8 y posterior. Sucesor oficial de Joda-Time.
    Back-ported a Java 6 y 7 y a Android .
  • Joda-Time
    Biblioteca de terceros, de código abierto, libre de costo.

java.time

 ZonedDateTime zdt = ZonedDateTime.now(); 

Si es necesario para el código anterior, conviértalo a java.util.Date. Vaya a Instant que es un momento en la línea de tiempo en UTC .

 java.util.Date date = java.util.Date.from( zdt.toInstant() ); 

Zona horaria

Es mejor especificar explícitamente la zona horaria deseada / esperada en lugar de confiar implícitamente en la zona horaria predeterminada actual de la JVM.

 ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.now( zoneId ); // Pass desired/expected time zone. 

Joda-Time

Para su información, el proyecto Joda-Time ahora está en modo de mantenimiento , y el equipo recomienda la migración a las clases java.time .

 DateTime now = DateTime.now(); 

Para convertir un objeto Joda-Time DateTime a java.util.Date para interoperar con otras clases …

 java.util.Date date = now.toDate(); 

Busque StackOverflow antes de publicar. Su pregunta ya ha sido hecha y respondida.


Acerca de java.time

El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las problemáticas antiguas clases heredadas de fecha y hora como java.util.Date , Calendar y SimpleDateFormat .

El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .

Para obtener más información, consulte el Tutorial de Oracle . Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .

¿Dónde obtener las clases de java.time?

  • Java SE 8 , Java SE 9 y posterior
    • Incorporado.
    • Parte de la API Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
  • Androide
    • Versiones posteriores de las implementaciones del paquete de Android de las clases java.time.
    • Para Android anterior, el proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente). Consulte Cómo utilizar ThreeTenABP ….

El proyecto ThreeTen-Extra amplía java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval , YearWeek , YearQuarter y más .

System.currentTimeMillis ()

todo lo demás funciona. Por ejemplo, la nueva Fecha () llama a System.currentTimeMillis ().

Solo para informar a otros desarrolladores, y afortunadamente a Basil Bourque, solo quiero agregar mi piedra a este tema.

Si simplemente desea obtener el formato HH: MM: SS, haga esto:

 LocalTime hour = ZonedDateTime.now().toLocalTime().truncatedTo(ChronoUnit.SECONDS); 

Aclamaciones.

PD: ¡Esto funcionará solo al menos con Java 8!

Como dije arriba puedes usar

 Date d = new Date(); 

o usar

 Calendar.getInstance(); 

o si lo quieres en millis

 System.currentTimeMillis() 

Pruebe de esta manera, más eficiente y compatible :

 SimpleDateFormat time_formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss.SSS"); String current_time_str = time_formatter.format(System.currentTimeMillis()); //Log.i("test", "current_time_str:" + current_time_str); 

No estoy seguro de lo que quieres decir, pero probablemente solo necesites

 Date d = new Date(); 

prueba esto:

 final String currentTime = String.valueOf(System.currentTimeMillis()); 

Puedes usar Date () nuevo y te dará la hora actual.

Si necesita representarlo en algún formato (y generalmente necesita hacerlo), utilice formateadores.

 DateFormat df = DateFormat.getDateTimeInstance (DateFormat.MEDIUM, DateFormat.MEDIUM, new Locale ("en", "EN")); String formattedDate = df.format (new Date ()); 

nueva fecha (). getTime () tiene errores .

  Date date = new Date(); System.out.println(date); System.out.println(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()); long t1 = date.getTime(); System.out.println((t1 / 1000 / 60 / 60) % 24 + ":" + (t1 / 1000 / 60) % 60 + ":" + (t1 / 1000) % 60); long t2 = System.currentTimeMillis(); System.out.println((t2 / 1000 / 60 / 60) % 24 + ":" + (t2 / 1000 / 60) % 60 + ":" + (t2 / 1000) % 60); 

Me devuelve el tiempo equivocado millis. System.currentTimeMillis() también. Dado que solicito a la instancia de Date que me diga la hora correspondiente millis, debe devolver los coincidentes, no otros de una zona horaria diferente. Es curioso cómo los métodos obsoletos son los únicos que devuelven los valores correctos.

Para obtener el tiempo del sistema use Calendar.getInstance (). GetTime ()

Y debe obtener la nueva instancia de Calendario cada vez para tener la hora actual .

Para cambiar la hora del sistema desde el código java, puede usar una línea de comando

Entiendo que esta es una pregunta bastante antigua. Pero me gustaría aclarar eso:

 Date d = new Date() 

es privado en las versiones actuales de Java. La forma recomendada es usar un objeto de calendario. Por ejemplo:

 Calendar cal = Calendar.getInstance(); Date currentTime = cal.getTime(); 

Espero que esto ayude a las personas que pueden remitir esta pregunta en el futuro. Gracias a todos.

intente obtener la fecha actual. También puede obtener la hora, los minutos y los segundos actuales mediante getters:

 new Date(System.currentTimeMillis()).get....()