2013-07-03 3 views
4

Можно ли форматировать дату JodaTime.Формат даты Jodatime

Вот код:

private static LocalDate priorDay(LocalDate date1) { 
     do { 
     date1 = date1.plusDays(-1); 
     } while (date1.getDayOfWeek() == DateTimeConstants.SUNDAY || 
      date1.getDayOfWeek() == DateTimeConstants.SATURDAY); 
     //System.out.print(date1); 
     return date1; 
    } 

Здесь DATE1 возвращается как: 2013-07-02, но я хотел бы, как 02-JUL-13

Заранее спасибо

ответ

9

Проверьте Joda DateTimeFormatter.

Вы, вероятно, хотите использовать его через что-то вроде:

DateTime dt = new DateTime(); 
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd-MMM-yy"); 
String str = fmt.print(dt); 

Это гораздо лучшее решение, чем существующий SimpleDateFormat класса. Вариант Joda является потокобезопасным. Старый вариант Java (контринтуитивно) не потокобезопасный!

13

Можно ли форматировать JodaTime Дата

Да. Вы хотите DateTimeFormatter.

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yy") 
    .withLocale(Locale.US); // Make sure we use English month names 
String text = formatter.format(date1); 

Это даст 02-Jul-13, но вы всегда можете использовать его в верхнем регистре.

Дополнительную информацию см. В разделе Input and Output.

EDIT: В качестве альтернативы, как это было предложено Рохит:

String text = date1.toString("dd-MMM-yy", Locale.US); 

Лично я бы предпочел, чтобы создать форматировщик один раз, как константа, и использовать его везде вам это нужно, но это до вас.

+2

Я думаю, что вы ошибались 'ММ', а не' MMM'. –

+0

@RohitJain: Действительно, я это сделал. Исправлено, спасибо. –

+0

@JonSkeet .. Из любопытства. Будет ли какая-либо проблема, кроме 'Locale', если бы я использовал' toString («dd-MMM-yy») ', а не' DateTimeFormatter.format() '? –

Смежные вопросы