2013-09-06 3 views
0

Привет, мне было интересно, был ли какой-либо способ использования классов даты Jav или классов Joda Time для получения определенного дня в этом году. Например, если мне нужна дата 12/31/2013. Причина, по которой это проблема, состоит в том, что я даю строковое представление о чьем-то дне рождения, давайте скажем "12311991""MMddyyyy", и я хочу, чтобы это была дата, которая имеет month 12 day 31 and year 2013.Как получить конкретную дату текущего года

Может ли кто-нибудь помочь мне в этом?

Я использую класс времени DateMidnight Joda, и я разбираю строку в дату с помощью Simple Formatter, но мне было интересно, есть ли способ установить год для определенного года.

ответ

3

Если вы хотите реализовать с помощью JodaTime вы можете сделать, как показано ниже. Формат с использованием DateTimeFormatter для получения DateTime, а затем с помощью метода DateTime#withYear(int), год может быть изменен.

String dob = "12311991"; 
DateTimeFormatter fmt = DateTimeFormat.forPattern("MMddyyyy"); 
DateTime dt = fmt.parseDateTime(dob).withYear(2013); 
System.out.println(dt); 
5

Start путем преобразования String в Date ...

String dateString = "12311991"; 
SimpleDateFormat sdf = new SimpleDateFormat("MMddyyyy"); 

Date date = sdf.parse(dateString); 

Какие результаты в ....

Tue Dec 31 00:00:00 EST 1991 

Далее используйте Calendar изменить year

Calendar cal = Calendar.getInstance(); 
cal.setTime(date); 
cal.set(Calendar.YEAR, 2013); 
date = cal.getTime(); 

Какие результаты в ...

Tue Dec 31 00:00:00 EST 2013 
1

Просто используйте SimpleDateFormat (click me, чтобы увидеть все модели формата).

String string = "12/31/2013"; 
Date date = new SimpleDateFormat("dd/mm/yyyy", Locale.ENGLISH).parse(string); 
System.out.println(date); 
0

java.time

Другие ответы устарели. Старые классы времени и времени, а также Joda-Time были заменены фреймами java.time, встроенными в Java 8 и более поздние версии.

Класс LocalDate действительно представляет собой значение только для даты без учета времени суток и без часового пояса (без исходных классов времени).

String input = "12311991"; 
DateTimeFormatter formatter = DateTimeFormatter.forPattern("MMddyyyy"); 
LocalDate localDate = LocalDate.parse(input , formatter); // 1991-12-31 
LocalDate differentYear = localDate.withYear(2013); // 2013-12-31 
Смежные вопросы