На этот вопрос уже есть ответ здесь:
Мне нужно изменить формат даты с помощью Java с
dd/MM/yyyy to yyyy/MM/dd
Как преобразовать один формат даты в другой с помощью 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);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
sdf.format(new Date());
Это должно помочь
Используйте SimpleDateFormat
String DATE_FORMAT = "yyyy/MM/dd";
SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT);
System.out.println("Formated Date " + sdf.format(date));
Полный пример:
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));
}
}
Или вы можете пойти по маршруту регулярных выражений:
String date = "10/07/2010";
String newDate = date.replaceAll("(\\d+)/(\\d+)/(\\d+)", "$3/$2/$1");
System.out.println(newDate);
Он также работает в обоих направлениях. Конечно, на самом деле это не подтвердит вашу дату, а также будет работать для таких строк, как «21432/32423/52352». Вы можете использовать "(\\ d {2}) / (\\ d {2}) / (\\ d {4}"
, чтобы быть более точным в количестве цифр в каждой группе, но он будет работать только от dd / MM / yyyy до yyyy / MM / dd, а не наоборот (и по-прежнему принимает недопустимые числа, например 45). И если вы дадите ему что-то недопустимое, например "blabla", он просто вернется то же самое назад.