java convertir - Cambiar el formato de fecha en una cadena Java




8 Answers

Use LocalDateTime#parse() (o ZonedDateTime#parse() si la cadena contiene una parte de zona horaria) para analizar una String en un patrón determinado en un LocalDateTime .

String oldstring = "2011-01-18 00:00:00.0";
LocalDateTime datetime = LocalDateTime.parse(oldstring, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S"));

Use LocalDateTime#format() (o ZonedDateTime#format() ) para formatear LocalDateTime en una String en un determinado patrón.

String newstring = datetime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
System.out.println(newstring); // 2011-01-18

O , cuando aún no está en Java 8, use SimpleDateFormat#parse() para analizar una String en un patrón determinado en una Date .

String oldstring = "2011-01-18 00:00:00.0";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S").parse(oldstring);

Use SimpleDateFormat#format() para formatear una Date en una String en un patrón determinado.

String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18

Ver también:

Actualización : según su intento fallido: los patrones distinguen entre mayúsculas y minúsculas . Lea el java.text.SimpleDateFormat javadoc lo que las partes individuales representan. Así que, por ejemplo, M por meses y m por minutos. Además, existen años de cuatro dígitos yyyy , no cinco yyyyy . Mire más de cerca los fragmentos de código que publiqué aquí arriba.

dar tipo

Tengo una String representa una fecha.

String date_s = "2011-01-18 00:00:00.0";

Me gustaría convertirlo en una Date y YYYY-MM-DD en YYYY-MM-DD .

2011-01-18

¿Cómo puedo conseguir esto?

De acuerdo, según las respuestas que obtuve a continuación, aquí hay algo que he intentado:

String date_s = " 2011-01-18 00:00:00.0"; 
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss"); 
Date date = dt.parse(date_s); 
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));

Pero genera 02011-00-1 lugar del deseado 2011-01-18 . ¿Qué estoy haciendo mal?




La respuesta es, por supuesto, crear un objeto SimpleDateFormat y usarlo para analizar cadenas hasta la fecha y para formatear fechas a cadenas. Si ha probado SimpleDateFormat y no ha funcionado, muestre su código y los errores que pueda recibir.

Anexo: "mm" en el formato La cadena no es lo mismo que "MM". Usa MM por meses y mm por minutos. Además, aaaa no es lo mismo que aaaa. p.ej,:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class FormateDate {

    public static void main(String[] args) throws ParseException {
        String date_s = "2011-01-18 00:00:00.0";

        // *** note that it's "yyyy-MM-dd hh:mm:ss" not "yyyy-mm-dd hh:mm:ss"  
        SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = dt.parse(date_s);

        // *** same for the format String below
        SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd");
        System.out.println(dt1.format(date));
    }

}



Usando el paquete java.time en Java 8 y posteriores:

String date = "2011-01-18 00:00:00.0";
TemporalAccessor temporal = DateTimeFormatter
    .ofPattern("yyyy-MM-dd HH:mm:ss.S")
    .parse(date); // use parse(date, LocalDateTime::from) to get LocalDateTime
String output = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(temporal);



Consulte "Patrones de fecha y hora" aquí. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;

public class DateConversionExample{

  public static void main(String arg[]){

    try{

    SimpleDateFormat sourceDateFormat = new SimpleDateFormat("yyyy-MM-DD HH:mm:ss");

    Date date = sourceDateFormat.parse("2011-01-18 00:00:00.0");


    SimpleDateFormat targetDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(targetDateFormat.format(date));

    }catch(ParseException e){
        e.printStackTrace();
    }
  } 

}



public class SystemDateTest {

    String stringDate;

    public static void main(String[] args) {
        SystemDateTest systemDateTest = new SystemDateTest();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-mm-yyyy hh:mm:ss");
        systemDateTest.setStringDate(simpleDateFormat.format(systemDateTest.getDate()));
        System.out.println(systemDateTest.getStringDate());
    }

    public Date getDate() {
        return new Date();
    }

    public String getStringDate() {
        return stringDate;
    }

    public void setStringDate(String stringDate) {
        this.stringDate = stringDate;
    }
}



   String str = "2000-12-12";
   Date dt = null;
   SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

    try 
    {
         dt = formatter.parse(str);
    }
    catch (Exception e)
    {
    }

    JOptionPane.showMessageDialog(null, formatter.format(dt));



Solo puedes usar:

Date yourDate = new Date();

SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
String date = DATE_FORMAT.format(yourDate);

¡Funciona perfectamente!




elimine una forma de y SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd"); debe ser SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");




Related

java string date formatting date-format