online joda examples dates java jodatime date-format

java - examples - ¿Cómo formatear Joda-Time DateTime a solo mm/dd/aaaa?



jodatime difference between dates (8)

Tengo una cadena " 11/15/2013 08:00:00 ", quiero formatearla para " 11/15/2013 ", ¿cuál es el patrón correcto de DateTimeFormatter ?

He probado muchos y buscado en Google y todavía no puedo encontrar el patrón correcto.

editar: Estoy buscando Joda-Time DateTimeFormatter , no SimpleDateFormat de Java ..


Tiempo Joda

Crear un DateTimeFormatter usando DateTimeFormat.forPattern(String)

Usando el tiempo Joda lo harías así:

String dateTime = "11/15/2013 08:00:00"; // Format for input DateTimeFormatter dtf = DateTimeFormat.forPattern("MM/dd/yyyy HH:mm:ss"); // Parsing the date DateTime jodatime = dtf.parseDateTime(dateTime); // Format for output DateTimeFormatter dtfOut = DateTimeFormat.forPattern("MM/dd/yyyy"); // Printing the date System.out.println(dtfOut.print(jodatime));

Estándar Java & geq; 8

Java 8 introdujo una nueva biblioteca de fecha y hora , lo que facilita el manejo de fechas y horas. Si desea utilizar la versión 8 de Java estándar o posterior, debería usar DateTimeFormatter . Dado que no tiene un huso horario en su String , un java.time.LocalDateTime o un LocalDate , de lo contrario, se podrían ZonedDateTime variedades ZonedDateTime y ZonedDate zonas ZonedDateTime .

// Format for input DateTimeFormatter inputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy HH:mm:ss"); // Parsing the date LocalDate date = LocalDate.parse(dateTime, inputFormat); // Format for output DateTimeFormatter outputFormat = DateTimeFormatter.ofPattern("MM/dd/yyyy"); // Printing the date System.out.println(date.format(outputFormat));

Estándar Java <8

Antes de Java 8, utilizaría a SimpleDateFormat y java.util.Date

String dateTime = "11/15/2013 08:00:00"; // Format for input SimpleDateFormat dateParser = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); // Parsing the date Date date7 = dateParser.parse(dateTime); // Format for output SimpleDateFormat dateFormatter = new SimpleDateFormat("MM/dd/yyyy"); // Printing the date System.out.println(dateFormatter.format(date7));


Creo que esto funcionará si usas JodaTime:

String strDateTime = "11/15/2013 08:00:00"; DateTime dateTime = DateTime.parse(strDateTime); DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/YYYY"); String strDateOnly = fmt.print(dateTime);

Tengo parte de esto desde here .


Esto funciona

String x = "22/06/2012"; String y = "25/10/2014"; String datestart = x; String datestop = y; //DateTimeFormatter format = DateTimeFormat.forPattern("dd/mm/yyyy"); SimpleDateFormat format = new SimpleDateFormat("dd/mm/yyyy"); Date d1 = null; Date d2 = null; try { d1 = format.parse(datestart); d2 = format.parse(datestop); DateTime dt1 = new DateTime(d1); DateTime dt2 = new DateTime(d2); //Period period = new Period (dt1,dt2); //calculate days int days = Days.daysBetween(dt1, dt2).getDays(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); }


Estoy agregando esto aquí a pesar de que las otras respuestas son completamente aceptables. JodaTime tiene analizadores pre integrados en DateTimeFormat:

dateTime.toString(DateTimeFormat.longDate());

Esta es la mayoría de las opciones impresas con su formato:

shortDate: 11/3/16 shortDateTime: 11/3/16 4:25 AM mediumDate: Nov 3, 2016 mediumDateTime: Nov 3, 2016 4:25:35 AM longDate: November 3, 2016 longDateTime: November 3, 2016 4:25:35 AM MDT fullDate: Thursday, November 3, 2016 fullDateTime: Thursday, November 3, 2016 4:25:35 AM Mountain Daylight Time


Otra forma de hacerlo es:

String date = dateAndTime.substring(0, dateAndTime.indexOf(" "));

No estoy exactamente seguro, pero creo que esto podría ser más rápido / usar menos memoria que usar el método .split() .


Tengo una opción muy tonta pero funcional. si tiene el String fullDate = "11/15/2013 08:00:00";

String finalDate = fullDate.split(" ")[0];

Eso debería funcionar fácil y rápido. :)


solo quiero cadena:

DateTime.parse("201711201515",DateTimeFormat.forPattern("yyyyMMddHHmm")).toString("yyyyMMdd");

si quieres datetime:

DateTime.parse("201711201515", DateTimeFormat.forPattern("yyyyMMddHHmm")).withTimeAtStartOfDay();


DateTime date = DateTime.now().withTimeAtStartOfDay(); date.toString("HH:mm:ss")