formatting to - Convertir java.util.Date a String





js c# (14)


Intentemos esto

public static void main(String args[]) {

    Calendar cal = GregorianCalendar.getInstance();
    Date today = cal.getTime();
    DateFormat df7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    try {           
        String str7 = df7.format(today);
        System.out.println("String in yyyy-MM-dd format is: " + str7);          
    } catch (Exception ex) {
      ex.printStackTrace();
    }
}

O una función de utilidad

public String convertDateToString(Date date, String format) {
    String dateStr = null;
    DateFormat df = new SimpleDateFormat(format);

    try {
        dateStr = df.format(date);
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return dateStr;
}

De convertir fecha a cadena en Java

Quiero convertir un objeto java.util.Date en una String en Java.

El formato es el 2010-05-30 22:15:52




Estos son ejemplos de cómo usar la nueva API de Java 8 Time para formatear el java.util.Date legacy :

    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z")
        .withZone(ZoneOffset.UTC);
    String utcFormatted = formatter.format(date.toInstant()); 

    ZonedDateTime utcDatetime = date.toInstant().atZone(ZoneOffset.UTC);
    String utcFormatted2 = utcDatetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS Z"));
    // gives the same as above

    ZonedDateTime localDatetime = date.toInstant().atZone(ZoneId.systemDefault());
    String localFormatted = localDatetime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
    // 2011-12-03T10:15:30+01:00[Europe/Paris]

    String nowFormatted = LocalDateTime.now().toString(); // 2007-12-03T10:15:30.123

Es bueno para DateTimeFormatter que se pueda almacenar en caché de manera eficiente ya que es seguro para subprocesos (a diferencia de SimpleDateFormat ).

Lista de fomaters predefinidos y referencia de notación de patrón .

Créditos:

¿Cómo analizar / formatear fechas con LocalDateTime? (Java 8)

Java8 java.util.Date conversión a java.time.ZonedDateTime

Formato instantáneo a cadena

¿Cuál es la diferencia entre java 8 ZonedDateTime y OffsetDateTime?




La forma más fácil de usarlo es como sigue:

currentISODate = new Date().parse("yyyy-MM-dd'T'HH:mm:ss", "2013-04-14T16:11:48.000");

donde "yyyy-MM-dd'T'HH: mm: ss" es el formato de la fecha de lectura

salida: dom 14 de abril 16:11:48 EEST 2013

Notas: HH vs hh - HH se refiere al formato de hora 24h - hh se refiere al formato de hora 12h




Prueba esto,

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class Date
{
    public static void main(String[] args) 
    {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = "2013-05-14 17:07:21";
        try
        {
           java.util.Date dt = sdf.parse(strDate);         
           System.out.println(sdf.format(dt));
        }
        catch (ParseException pe)
        {
            pe.printStackTrace();
        }
    }
}

Salida:

2013-05-14 17:07:21

Para obtener más información sobre el formato de fecha y hora en java, consulte los enlaces a continuación

Centro de ayuda de Oracle

Ejemplo de fecha y hora en java.




Format formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String s = formatter.format(date);



¿Por qué no usas Joda (org.joda.time.DateTime)? Es básicamente una sola línea.

Date currentDate = GregorianCalendar.getInstance().getTime();
String output = new DateTime( currentDate ).toString("yyyy-MM-dd HH:mm:ss");

// output: 2014-11-14 14:05:09



En Java, convierta una fecha en una cadena usando una cadena de formato:

// Create an instance of SimpleDateFormat used for formatting 
// the string representation of date (month/day/year)
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");

// Get the date today using Calendar object.
Date today = Calendar.getInstance().getTime();        
// Using DateFormat format method we can create a string 
// representation of a date with the defined format.
String reportDate = df.format(today);

// Print what date is today!
System.out.println("Report Date: " + reportDate);

De http://www.kodejava.org/examples/86.html




tl; dr

myUtilDate.toInstant()  // Convert `java.util.Date` to `Instant`.
          .atOffset( ZoneOffset.UTC )  // Transform `Instant` to `OffsetDateTime`.
          .format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )  // Generate a String.
          .replace( "T" , " " )  // Put a SPACE in the middle.

2014-11-14 14:05:09

java.time

La forma moderna es con las clases java.time que ahora suplantan a las antiguas y problemáticas clases de fecha y hora.

Primero convierte tu java.util.Date a un Instant . La clase Instant representa un momento en la línea de tiempo en UTC con una resolución de nanoseconds (hasta nueve (9) dígitos de una fracción decimal).

Las conversiones a / desde java.time se realizan mediante nuevos métodos agregados a las clases anteriores.

Instant instant = myUtilDate.toInstant();

Tanto su java.util.Date como java.time.Instant están en UTC . Si quieres ver la fecha y la hora como UTC, que así sea. Llame a toString para generar una cadena en formato estándar ISO 8601 .

String output = instant.toString();  

2014-11-14T14: 05: 09Z

Para otros formatos, necesita transformar su Instant en el OffsetDateTime más flexible.

OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC );

odt.toString (): 2014-11-14T14: 05: 09 + 00: 00

Para obtener una cadena en el formato deseado, especifique un DateTimeFormatter . Podría especificar un formato personalizado. Pero usaría uno de los formateadores predefinidos ( ISO_LOCAL_DATE_TIME ), y reemplazaría la T en su salida con un ESPACIO.

String output = odt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

Por cierto, no recomiendo este tipo de formato en el que pierde a propósito la información de offset-from-UTC o zona horaria. Crea ambigüedad en cuanto al significado del valor de fecha y hora de esa cadena.

También tenga cuidado con la pérdida de datos, ya que cualquier segundo fraccional se ignora (se trunca de manera efectiva) en la representación de su cadena del valor de fecha y hora.

Para ver ese mismo momento a través de la lente del reloj de pared de alguna región en particular, aplique un ZoneId para obtener un ZonedDateTime .

ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );

zdt.toString (): 2014-11-14T14: 05: 09-05: 00 [América / Montreal]

Para generar una cadena con formato, haga lo mismo que arriba pero reemplace zdt con zdt .

String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
                   .replace( "T" , " " );

2014-11-14 14:05:09

Si ejecuta este código una gran cantidad de veces, es posible que desee ser un poco más eficiente y evitar la llamada a String::replace . Al descartar esa llamada también hace que su código sea más corto. Si lo desea, especifique su propio patrón de formato en su propio objeto DateTimeFormatter . Almacenar en caché esta instancia como una constante o miembro para su reutilización.

DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" );  // Data-loss: Dropping any fractional second.

Aplique ese formateador pasando la instancia.

String output = zdt.format( f );

Acerca de java.time

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

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

Para obtener más información, consulte el Tutorial de Oracle . Y busca para muchos ejemplos y explicaciones.

Gran parte de la funcionalidad de java.time está respaldada a Java 6 y 7 en ThreeTen-Backport y se adapta aún más a Android en ThreeTenABP (consulte Cómo usar ... ).

El proyecto ThreeTen-Extra extiende java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time.




En un solo disparo;)

Para obtener la fecha

String date = new SimpleDateFormat("yyyy-MM-dd",   Locale.getDefault()).format(new Date());

Para obtener el tiempo

String time = new SimpleDateFormat("hh:mm", Locale.getDefault()).format(new Date());

Para obtener la fecha y hora

String dateTime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss", Locale.getDefaut()).format(new Date());

Feliz codificacion :)




Alternativas de una sola línea en Java antiguo:

String.format("The date: %tY-%tm-%td", date, date, date);

String.format("The date: %1$tY-%1$tm-%1$td", date);

String.format("Time with tz: %tY-%<tm-%<td %<tH:%<tM:%<tS.%<tL%<tz", date);

String.format("The date and time in ISO format: %tF %<tT", date);

Esto usa Formatter y la indexación relativa en lugar de SimpleDateFormat que no es seguro para subprocesos , por cierto.

Un poco más repetitivo pero necesita solo una declaración. Esto puede ser útil en algunos casos.




public static void main(String[] args) 
{
    Date d = new Date();
    SimpleDateFormat form = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss");
    System.out.println(form.format(d));
    String str = form.format(d); // or if you want to save it in String str
    System.out.println(str); // and print after that
}



Si solo necesita la hora de la fecha, puede usar la función Cadena.

Date test = new Date();
String dayString = test.toString();
String timeString = dayString.substring( 11 , 19 );

Esto cortará automáticamente la parte del tiempo de la cadena y la guardará dentro de la timeString .




public static String formateDate(String dateString) {
    Date date;
    String formattedDate = "";
    try {
        date = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss",Locale.getDefault()).parse(dateString);
        formattedDate = new SimpleDateFormat("dd/MM/yyyy",Locale.getDefault()).format(date);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return formattedDate;
}



Puedes hacerlo en java 8 de la siguiente manera

ArrayList<Element> list = (ArrayList<Element>)Arrays.stream(array).collect(Collectors.toList());






java date formatting java.util.date