Me gustaría convertir una fecha en date1 formato a un objeto date de date2 formato.

    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy");
    SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyyMMdd");
    Calendar cal = Calendar.getInstance();
    cal.set(2012, 8, 21);
    Date date = cal.getTime();
    Date date1 = simpleDateFormat.parse(date);
    Date date2 = simpleDateFormat.parse(date1);
    println date1
    println date2
InformationsquelleAutor Phoenix | 2012-09-19

10 Comentarios

  1. 111

    Uso SimpleDateFormat#formato:

    DateFormat originalFormat = new SimpleDateFormat("MMMM dd, yyyy", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("yyyyMMdd");
    Date date = originalFormat.parse("August 21, 2012");
    String formattedDate = targetFormat.format(date);  //20120821

    También tenga en cuenta que parse toma un String, no Date objeto, que es ya analiza.

    • Esto es lo que he intentado y lanzó una excepción
    • tendría que envolver Fecha parsedDate = simpleDateFormat1.parse(formattedDate); con try catch ya que me tire parseexception.
    • ¿Qué son exactamente las entradas que están tratando de analizar? Probar esta demo ideone.com/Hr6B0. Tal vez usted está pasando una inválida Date?
    • Mi entrada es una cadena de este formato 21 de agosto de 2012 y necesito guardar como otra cadena de formato 20120821
    • Está estableciendo la Locale a Locale.ENGLISH de la primera SimpleDateFormat? De lo contrario, si usted está en un no-inglés Locale, August no se analiza correctamente y se lanzará una ParseException.
    • Esto es lo que hice. Quiero que la salida de fin de ser «20120821» SimpleDateFormat simpleDateFormat = new SimpleDateFormat(«dd de MMMM de aaaa»,la configuración Regional.INGLÉS); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(«yyyyMMdd»); Date fecha1 = simpleDateFormat.format(«21 de agosto de 2012»); String formattedDate = simpleDateFormat1.formato(fecha1); Fecha parsedDate = simpleDateFormat1.parse(formattedDate);
    • es formato de la salida; para analizar un Date de un String necesita utilizar parse. Así, en lugar de Date date1 = simpleDateFormat.format("August 21, 2012"), usted debe tener Date date1 = simpleDateFormat.parse("August 21, 2012") como en mi código de ejemplo.
    • Upvoted. Gran trabajo. Este me ayudó.
    • Mientras que esta respuesta fue la mejor respuesta en el momento, yo debería aconsejar a los visitantes que llegan al sitio ahora que las clases utilizadas son considerados legado en estos días. Las respuestas que se refieren a Java 8 son ahora la mejor forma de hacerlo.

  2. 5

    tl;dr

    LocalDate.parse( 
        "January 08, 2017" , 
        DateTimeFormatter.ofPattern( "MMMM dd, uuuu" , Locale.US ) 
    ).format( DateTimeFormatter.BASIC_ISO_DATE ) 

    Usando java.tiempo

    La Pregunta y otro Responde uso problemático de edad fecha y la hora de clases, ahora legado, suplantado por el de java.clases de tiempo.

    Tiene fecha sólo de valores, por lo que el uso de una única clase. El LocalDate clase representa una fecha valor solo sin la hora del día y sin zona horaria.

    String input = "January 08, 2017";
    Locale l = Locale.US ;
    DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMMM dd, uuuu" , l );
    LocalDate ld = LocalDate.parse( input , f );

    El formato de salida deseado se define por la ISO 8601 estándar. Para una fecha-solo valor, el «ampliado», en formato AAAA-MM-DD tales como 2017-01-08 y el «básico», formato que minimiza el uso de delimitadores es YYYYMMDD como 20170108.

    Yo sugiero utilizar el formato ampliado para mejorar la legibilidad. Pero si usted insiste en el formato básico, que formateador está predefinida como una constante en la DateTimeFormatter clase denominada BASIC_ISO_DATE.

    String output = ld.format( DateTimeFormatter.BASIC_ISO_DATE );

    Ver este ejecución de código en vivo en IdeOne.com.

    ld.toString(): 2017-01-08

    de salida: 20170108


    Acerca de java.tiempo

    La java.tiempo marco está construido en Java 8 y versiones posteriores. Estas clases suplantar la problemática de edad legado fecha y hora de las clases, tales como java.util.Fecha, Calendario, & SimpleDateFormat.

    La Joda-El Tiempo proyecto, ahora en el modo de mantenimiento, asesora de la migración a la java.tiempo clases.

    Para obtener más información, consulte la Oracle Tutorial. Y la búsqueda de Desbordamiento de Pila, hay muchos ejemplos y explicaciones. La especificación es JSR 310.

    Dónde obtener el java.clases de tiempo?

    La ThreeTen-Extra proyecto se extiende java.tiempo con clases adicionales. Este proyecto es un terreno de prueba para posibles futuras incorporaciones a java.tiempo. Usted puede encontrar algunos de clases útiles aquí como Intervalo, YearWeek, YearQuarter, y más.

  3. 3

    Desde Java 8, se puede lograr de la siguiente manera:

    private static String convertDate(String strDate) 
    {
        //for strdate = 2017 July 25
    
        DateTimeFormatter f = new DateTimeFormatterBuilder().appendPattern("yyyy MMMM dd")
                                            .toFormatter();
    
        LocalDate parsedDate = LocalDate.parse(strDate, f);
        DateTimeFormatter f2 = DateTimeFormatter.ofPattern("MM/d/yyyy");
    
        String newDate = parsedDate.format(f2);
    
        return newDate;
    }

    La salida será : «07/25/2017»

  4. 1

    Por favor consulte el siguiente método. Se toma la fecha de la Cadena como argumento1, es necesario especificar el formato existente de la fecha
    como argumento2, y el resultado (espera) formato como argumento 3.

    Consulte este enlace para entender varios formatos:
    Formatos De Fecha Disponibles

    public static String formatDateFromOnetoAnother(String date,String givenformat,String resultformat) {
    
        String result = "";
        SimpleDateFormat sdf;
        SimpleDateFormat sdf1;
    
        try {
            sdf = new SimpleDateFormat(givenformat);
            sdf1 = new SimpleDateFormat(resultformat);
            result = sdf1.format(sdf.parse(date));
        }
        catch(Exception e) {
            e.printStackTrace();
            return "";
        }
        finally {
            sdf=null;
            sdf1=null;
        }
        return result;
    }
  5. 0

    Espero que esto ayude a alguien.

     public static String getDate(
            String date, String currentFormat, String expectedFormat)
    throws ParseException {
        //Validating if the supplied parameters is null 
        if (date == null || currentFormat == null || expectedFormat == null ) {
            return null;
        }
        //Create SimpleDateFormat object with source string date format
        SimpleDateFormat sourceDateFormat = new SimpleDateFormat(currentFormat);
        //Parse the string into Date object
        Date dateObj = sourceDateFormat.parse(date);
        //Create SimpleDateFormat object with desired date format
        SimpleDateFormat desiredDateFormat = new SimpleDateFormat(expectedFormat);
        //Parse the date into another format
        return desiredDateFormat.format(dateObj).toString();
    }
  6. 0

    Probar este

    Esta es la forma más sencilla de cambiar el formato de fecha a otra

    public String changeDateFormatFromAnother(String date){
        @SuppressLint("SimpleDateFormat") DateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        @SuppressLint("SimpleDateFormat") DateFormat outputFormat = new SimpleDateFormat("dd MMMM yyyy");
        String resultDate = "";
        try {
            resultDate=outputFormat.format(inputFormat.parse(date));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return resultDate;
    }
  7. 0
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
                 String fromDateFormat = "dd/MM/yyyy";
                 String fromdate = 15/03/2018; //Take any date
    
                 String CheckFormat = "dd MMM yyyy";//take another format like dd/MMM/yyyy
                 String dateStringFrom;
    
                 Date DF = new Date();
    
    
                  try
                  {
                     //DateFormatdf = DateFormat.getDateInstance(DateFormat.SHORT);
                     DateFormat FromDF = new SimpleDateFormat(fromDateFormat);
                     FromDF.setLenient(false);  //this is important!
                     Date FromDate = FromDF.parse(fromdate);
                     dateStringFrom = new 
                     SimpleDateFormat(CheckFormat).format(FromDate);
                     DateFormat FromDF1 = new SimpleDateFormat(CheckFormat);
                     DF=FromDF1.parse(dateStringFrom);
                     System.out.println(dateStringFrom);
                  }
                  catch(Exception ex)
                  {
    
                      System.out.println("Date error");
    
                  }
    
    output:- 15/03/2018
             15 Mar 2018
  8. 0

    Kotlin equivalente de respuesta contestada por João Silva

     fun getFormattedDate(originalFormat: SimpleDateFormat, targetFormat: SimpleDateFormat, inputDate: String): String {
        return targetFormat.format(originalFormat.parse(inputDate))
    }

    De Uso (En Android):

    getFormattedDate(
                SimpleDateFormat(FormatUtils.d_MM_yyyy, Locale.getDefault()),
                SimpleDateFormat(FormatUtils.d_MMM_yyyy, Locale.getDefault()),
                dateOfTreatment
        )

    Nota: valores Constantes:

    //25 Nov 2017
    val d_MMM_yyyy = "d MMM yyyy"
    
    //25/10/2017
    val d_MM_yyyy = "d/MM/yyyy"
  9. 0
      private String formatDate(String date, String inputFormat, String outputFormat) {
    
        String newDate;
        DateFormat inputDateFormat = new SimpleDateFormat(inputFormat);
        inputDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        DateFormat outputDateFormat = new SimpleDateFormat(outputFormat);
        try {
            newDate = outputDateFormat.format((inputDateFormat.parse(date)));
        } catch (Exception e) {
            newDate = "";
        }
        return newDate;
    
    }
    • Aunque no oficialmente obsoleto, las clases DateFormat, SimpleDateFormat y TimeZone están mal diseñadas y largo obsoletos. Por favor, no sugieren el uso de ellos en el año 2019, es una mala idea.
  10. -1
        //Convert input format 19-FEB-16 01.00.00.000000000 PM to 2016-02-19 01.00.000 PM
        SimpleDateFormat inFormat = new SimpleDateFormat("dd-MMM-yy hh.mm.ss.SSSSSSSSS aaa");
        Date today = new Date();        
    
        Date d1 = inFormat.parse("19-FEB-16 01.00.00.000000000 PM");
    
        SimpleDateFormat outFormat = new SimpleDateFormat("yyyy-MM-dd hh.mm.ss.SSS aaa");
    
        System.out.println("Out date ="+outFormat.format(d1));
    • SimpleDateFormat se limita a analizar una precisión de milisegundos, y dañará los minutos/segundos si se le pide para ir más allá de eso.

Dejar respuesta

Please enter your comment!
Please enter your name here