преобразовать дату из гггг-мм-дд в день-месяц-дату - PullRequest
5 голосов
/ 02 ноября 2011

У меня есть дата в этом формате 2011-11-02. С этой даты, как мы можем узнать Day-of-week, Month и Day-of-month, как в этом формате Wednesday-Nov-02, из календаря или любым другим способом?

1 Ответ

13 голосов
/ 02 ноября 2011

Если бы это была обычная Java, вы бы использовали два SimpleDateFormats - один для чтения и один для записи:

SimpleDateFormat read = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat write = new SimpleDateFormat("EEEE-MMM-dd");
String str = write.format(read.parse("2011-11-02"));
System.out.println(str);

Выход:

Wednesday-Nov-02

Как функция (то есть статический метод) это будет выглядеть так:

public static String reformat(String source) throws ParseException {
    SimpleDateFormat read = new SimpleDateFormat("yyyy-MM-dd");
    SimpleDateFormat write = new SimpleDateFormat("EEEE-MMM-dd");
    return write.format(read.parse(source));
}

Внимание:
Не поддавайтесь искушению сделать read или write в статических полях, чтобы сохранить их создание при каждом вызове метода, потому что SimpleDateFormat не является потокобезопасным!

Отредактировано

Однако после ознакомления с документом Blackberry Java 5.0 API кажется, что часть write.format должна работать с SimpleDateFormat , но вам нужно будет проанализировать дату, используя что-то еще ... HttpDateParser выглядит многообещающе. У меня не установлен JDK, но попробуйте следующее:

public static String reformat(String source) {
    SimpleDateFormat write = new SimpleDateFormat("EEEE-MMM-dd");
    Date date = new Date(HttpDateParser.parse(source));
    return write.format(date);
}
...