Convierta java.util.Date en Cadena


Answers

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

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

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




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




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;
}



¿Por qué no usas Joda (org.joda.time.DateTime)? Básicamente es un trazador de líneas.

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

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



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 el tiempo a partir de la fecha, puede usar la función de Cadena.

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

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




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 problemáticas antiguas clases heredadas de fecha y hora.

Primero convierta su 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 antiguas.

Instant instant = myUtilDate.toInstant();

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

String output = instant.toString();  

2014-11-14T14: 05: 09Z

Para otros formatos, debe 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 un String en el formato que desee, especifique un DateTimeFormatter . Puede especificar un formato personalizado. Pero usaría uno de los formateadores predefinidos ( ISO_LOCAL_DATE_TIME ) y reemplazaría el 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 deliberadamente pierdes la offset-from-UTC o la 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 fracción de segundo se ignora (truncado efectivamente) en la representación de su cadena del valor de la fecha y hora.

Para ver ese mismo momento a través de la lente de la hora del reloj de pared de una 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 formateada, 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 . Dejar caer esa llamada también hace que su código sea más corto. Si así lo desea, especifique su propio patrón de formato en su propio objeto DateTimeFormatter . Guarde 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.

Aplica ese formateador pasando la instancia.

String output = zdt.format( f );

Acerca de java.time

El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las antiguas clases problemáticas de fecha y hora, como java.util.Date , .Calendar y 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 busque para obtener muchos ejemplos y explicaciones.

Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport y se adapta mejor a Android en ThreeTenABP (ver Cómo usar ... ).

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.




Related