tengo que cambiar el formato de fecha utilizando Java desde¿Cómo puedo cambiar el formato de fecha en Java?
dd/MM/yyyy to yyyy/MM/dd
tengo que cambiar el formato de fecha utilizando Java desde¿Cómo puedo cambiar el formato de fecha en Java?
dd/MM/yyyy to yyyy/MM/dd
Cómo convertir de un formato de fecha a otro usando SimpleDateFormat:
final String OLD_FORMAT = "dd/MM/yyyy";
final String NEW_FORMAT = "yyyy/MM/dd";
// August 12, 2010
String oldDateString = "12/08/2010";
String newDateString;
SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT);
Date d = sdf.parse(oldDateString);
sdf.applyPattern(NEW_FORMAT);
newDateString = sdf.format(d);
Uso SimpleDateFormat
String DATE_FORMAT = "yyyy/MM/dd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Formated Date " + sdf.format(date));
ejemplo completo:
import java.text.SimpleDateFormat;
import java.util.Date;
public class JavaSimpleDateFormatExample {
public static void main(String args[]) {
// Create Date object.
Date date = new Date();
// Specify the desired date format
String DATE_FORMAT = "yyyy/MM/dd";
// Create object of SimpleDateFormat and pass the desired date format.
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
/*
* Use format method of SimpleDateFormat class to format the date.
*/
System.out.println("Today is " + sdf.format(date));
}
}
¿puedo pasar una cadena hasta la fecha? – rasi
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.format(new Date());
Esto debería hacer el truco
tengo una cadena en formato 'dd/MM/aaaa' cómo puedo convertir – rasi
o usted podría ir a la ruta de expresiones regulares:
String date = "10/07/2010";
String newDate = date.replaceAll("(\\d+)/(\\d+)/(\\d+)", "$3/$2/$1");
System.out.println(newDate);
funciona en ambos sentidos también. Por supuesto, esto no validará su fecha y también funcionará para cadenas como "21432/32423/52352". Puede usar "(\\d{2})/(\\d{2})/(\\d{4}"
para ser más exacto en la cantidad de dígitos en cada grupo, pero solo funcionará de dd/MM/aaaa a aaaa/MM/dd y no al revés (y aún acepta números no válidos allí como 45). Y si le das algo no válido como "blabla", devolverá lo mismo.
Ahora tiene dos problemas. ;-) –
SimpleDateFormat newDateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date myDate = newDateFormat.parse("28/12/2013");
newDateFormat.applyPattern("yyyy/MM/dd")
String myDateString = newDateFormat.format(myDate);
ahora MiFecha = 2013/12/28
LocalDate.parse(
"23/01/2017" ,
DateTimeFormatter.ofPattern("dd/MM/uuuu" , Locale.UK)
).format(
DateTimeFormatter.ofPattern("uuuu/MM/dd" , Locale.UK)
)
2017/01/23
El answer by Christopher Parker es correcto pero desactualizado. Las antiguas clases problemáticas de fecha y hora como java.util.Date
, java.util.Calendar
y java.text.SimpleTextFormat
ahora son legacy, suplantadas por las clases java.time.
analizar la cadena de entrada como un objeto de fecha y hora, a continuación, generar un nuevo objeto String en el formato deseado.
La clase LocalDate
representa un valor de fecha solamente sin hora del día y sin zona horaria.
DateTimeFormatter fIn = DateTimeFormatter.ofPattern("dd/MM/uuuu" , Locale.UK); // As a habit, specify the desired/expected locale, though in this case the locale is irrelevant.
LocalDate ld = LocalDate.parse("23/01/2017" , fIn);
Define otro formateador para la salida.
DateTimeFormatter fOut = DateTimeFormatter.ofPattern("uuuu/MM/dd" , Locale.UK);
String output = ld.format(fOut);
2017/01/23
Por cierto, considerar el uso de ISO 8601 formatos estándar para cadenas que representan los valores de fecha y hora.
El marco java.time está incorporado en Java 8 y versiones posteriores. Estas clases suplantan a las viejas y problemáticas clases de fecha y hora legacy, como java.util.Date
, Calendar
, & SimpleDateFormat
.
El proyecto Joda-Time, ahora en maintenance mode, recomienda la migración a las clases java.time.
Para obtener más información, consulte el Oracle Tutorial. Y busque Stack Overflow para obtener muchos ejemplos y explicaciones. La especificación es JSR 310.
¿Dónde obtener las clases java.time?
El proyecto se extiende ThreeTen-Extra java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval
, YearWeek
, YearQuarter
y more.
ACTUALIZACIÓN:Joda-Time El proyecto se encuentra ahora en maintenance mode, con el equipo de asesoramiento migración a los java.time clases. Esta sección aquí queda por el bien de la historia.
Por diversión, aquí está su código adaptado para usar la biblioteca Joda-Time.
// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
// import org.joda.time.*;
// import org.joda.time.format.*;
final String OLD_FORMAT = "dd/MM/yyyy";
final String NEW_FORMAT = "yyyy/MM/dd";
// August 12, 2010
String oldDateString = "12/08/2010";
String newDateString;
DateTimeFormatter formatterOld = DateTimeFormat.forPattern(OLD_FORMAT);
DateTimeFormatter formatterNew = DateTimeFormat.forPattern(NEW_FORMAT);
LocalDate localDate = formatterOld.parseLocalDate(oldDateString);
newDateString = formatterNew.print(localDate);
volcado a la consola ...
System.out.println("localDate: " + localDate);
System.out.println("newDateString: " + newDateString);
Cuando ejecute ...
localDate: 2010-08-12
newDateString: 2010/08/12
SimpleDateFormat format1 = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(format1.format(date));
muchas maneras de cambiar el formato de fecha
private final String dateTimeFormatPattern = "yyyy/MM/dd";
private final Date now = new Date();
final DateFormat format = new SimpleDateFormat(dateTimeFormatPattern);
final String nowString = format.format(now);
final Instant instant = now.toInstant();
final DateTimeFormatter formatter =
DateTimeFormatter.ofPattern(
dateTimeFormatPattern).withZone(ZoneId.systemDefault());
final String formattedInstance = formatter.format(instant);
/* Java 8 needed*/
LocalDate date = LocalDate.now();
String text = date.format(formatter);
LocalDate parsedDate = LocalDate.parse(text, formatter);
Para cambiar el formato de la fecha que ha requerido Ambos formatos de aspecto a continuación.
String stringdate1 = "28/04/2010";
try {
SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy");
Date date1 = format1.parse()
SimpleDateFormat format2 = new SimpleDateFormat("yyyy/MM/dd");
String stringdate2 = format2.format(date1);
} catch (ParseException e) {
e.printStackTrace();
}
aquí stringdate2
tienen formato de fecha de yyyy/MM/dd
. y contiene 2010/04/28
.
Esto es sólo de Christopher Parker answer adaptado para usar los nuevos clases de Java 8:
final DateTimeFormatter OLD_FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");
final DateTimeFormatter NEW_FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd");
String oldString = "26/07/2017";
LocalDate date = LocalDate.parse(oldString, OLD_FORMATTER);
String newString = date.format(NEW_FORMATTER);
1 bien, no es que más nueva, Java 9 debe ser liberado pronto.
FYI, las antiguas clases problemáticas de fecha y hora como ['java.util.Date'] (https://docs.oracle.com/ javase/8/docs/api/java/util/Date.html), ['java.util.Calendar'] (https://docs.oracle.com/javase/8/docs/api/java/util/Calendar .html) y 'java.text.SimpleTextFormat' ahora son [legacy] (https://en.wikipedia.org/wiki/Legacy_system), suplantado por el [java.time] (https://docs.oracle. com/javase/8/docs/api/java/time/package-summary.html) clases. Consulte [Tutorial de Oracle] (https://docs.oracle.com/javase/tutorial/datetime/TOC.html). –