¿Cómo convertir la fecha actual en una cadena en java?

¿Cómo convierto la fecha actual en una cadena en Java?

String date = new SimpleDateFormat("dd-MM-yyyy").format(new Date()); 
 // GET DATE & TIME IN ANY FORMAT import java.util.Calendar; import java.text.SimpleDateFormat; public static final String DATE_FORMAT_NOW = "yyyy-MM-dd HH:mm:ss"; public static String now() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW); return sdf.format(cal.getTime()); } 

Tomado de aquí

 // On the form: dow mon dd hh:mm:ss zzz yyyy new Date().toString(); 

Use una implementación de DateFormat ; por ejemplo, SimpleDateFormat .

 DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); String data = df.format(new Date()); 

Más rápido :

 String date = FastDateFormat.getInstance("dd-MM-yyyy").format(System.currentTimeMillis( )); 

tl; dr

 LocalDate.now() .toString() 

2017-01-23

Es mejor especificar el huso horario deseado / esperado explícitamente.

 LocalDate.now( ZoneId.of( "America/Montreal" ) ) .toString() 

java.time

La forma moderna a partir de Java 8 y posterior es con el marco java.time .

Especifique la zona horaria, ya que la fecha varía en todo el mundo en cualquier momento.

 ZoneId zoneId = ZoneId.of( "America/Montreal" ) ; // Or ZoneOffset.UTC or ZoneId.systemDefault() LocalDate today = LocalDate.now( zoneId ) ; String output = today.toString() ; 

2017-01-23

Por defecto, obtiene un String en formato estándar ISO 8601 .

Para otros formatos use la clase java.time.format.DateTimeFormatter .


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 .

Puede intercambiar objetos java.time directamente con su base de datos. Use un controlador JDBC que cumpla con JDBC 4.2 o posterior. Sin necesidad de cadenas, sin necesidad de clases java.sql.* .

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

  • Java SE 8 , Java SE 9 , Java SE 10 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 (<26), 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 .

La mayoría de las respuestas son / fueron válidas. La nueva modificación de la API de JAVA para la gestión de fechas aseguró que se reduzca la ambigüedad anterior en el manejo de la fecha de Java.

Obtendrá un mensaje obsoleto para llamadas similares.

 new Date() // deprecated 

La llamada anterior hizo que el desarrollador asumiera que un nuevo objeto Date le dará al objeto Date la marca de tiempo actual. Este comportamiento no es uniforme en otras clases de API de Java.

La nueva forma de hacerlo es usar la instancia de calendario .

 new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime() 

Aquí también la convención de nomenclatura no es perfecta, pero está muy organizada. Para una persona como yo que tiene dificultades para molestar cosas pero nunca olvidaría algo si suena / parece lógico, este es un buen enfoque.

Esto es más sinónimo de la vida real

  1. Obtenemos un objeto de calendario y buscamos el tiempo en él. (debe estarse preguntando que ningún cuerpo obtiene tiempo de un calendario, es por eso que dije que no es perfecto. Pero ese es un tema completamente diferente)
  2. Luego queremos la fecha en un formato de Texto simple, así que usamos una clase de utilidad SimpleDateFormat que nos ayuda a formatear la Fecha del Paso 1. He usado aaaa, MM, dd como parámetros en el formato. Parámetros de formato de fecha admitidos

Una forma más de hacerlo es usar la API de tiempo de Joda

 new DateTime().toString("yyyy-MM-dd") 

o el mucho más obvio

 new DateTime(Calendar.getInstance().getTime()).toString("yyyy-MM-dd") 

ambos devolverán el mismo resultado.

Por tiempo como AAAA-MM-dd

 String time = new DateTime( yourData ).toString("yyyy-MM-dd"); 

Y la Biblioteca de DateTime es:

import org.joda.time.DateTime;

 public static Date getDateByString(String dateTime) { if(dateTime==null || dateTime.isEmpty()) { return null; } else{ String modified = dateTime + ".000+0000"; DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); Date dateObj = new Date(); Date dateObj1 = new Date(); try { if (dateTime != null) { dateObj = formatter.parse(modified); } } catch (ParseException e) { e.printStackTrace(); } return dateObj; } }