2014-02-13 4 views
0

Можно ли разобрать даты, как это в Java:Можно ли разобрать эти даты

Sunday February 09th, 2014 or Sunday February 21st, 2014.

Я ищу путь с SimpleDateFormat. Thanks

+0

Вы пробовали 'E \t Именины в week' и' M \t Месяц в year'? – Smutje

+0

Propbaly вы должны выровнять ординалы с регулярным выражением перед использованием DateFormat.parse(). – PeterMmm

+0

Вот что я сделал. Я хотел просто знать, есть ли способ с SimpleDateFormat. – Hunsu

ответ

2

Вы можете использовать SimpleDateFormat, попробуйте маску:

"E, dd MMMMM yyyy" 

например: воскресенье 9 февраля 2014

нет никакого способа в SimpleDateFormat добавить й, е и т.д. ... вы бы должны сделать это вручную:

// http://code.google.com/p/guava-libraries 
import static com.google.common.base.Preconditions.*; 

String getDayOfMonthSuffix(final int n) { 
    checkArgument(n >= 1 && n <= 31, "illegal day of month: " + n); 
if (n >= 11 && n <= 13) { 
    return "th"; 
} 
switch (n % 10) { 
    case 1: return "st"; 
    case 2: return "nd"; 
    case 3: return "rd"; 
    default: return "th"; 
} 

}

0
SimpleDateFormat formatter = new SimpleDateFormat("E, MMM dd yyyy"); 
String dateInString = "Fri, June 7 2013";  
    try { 
     Date date = formatter.parse(dateInString); 
     System.out.println(date); 
    System.out.println(formatter.format(date)); 
    } catch (ParseException e) { 
    e.printStackTrace(); 
} 

Попробуйте что-нибудь подобное. Ref: http://www.mkyong.com/java/how-to-convert-string-to-date-java/

+2

Что такое цифры, которые запросили ОП? – PeterMmm

0
SimpleTimeZone pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST"); 
pdt.setStartRule(DateFields.APRIL, 1, DateFields.SUNDAY, 2*60*60*1000); 
pdt.setEndRule(DateFields.OCTOBER, -1, DateFields.SUNDAY, 2*60*60*1000); 
// Format the current time. 
SimpleDateFormat formatter 
= new SimpleDateFormat ("yyyy.mm.dd e 'at' hh:mm:ss a zzz"); 
Date currentTime_1 = new Date(); 
String dateString = formatter.format(currentTime_1); 
// Parse the previous string back into a Date. 
ParsePosition pos = new ParsePosition(0); 
Date currentTime_2 = formatter.parse(dateString, pos); 

См. Это для получения дополнительной информации; http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

+0

У меня ошибка с DateFields. Что мне следует импортировать? – Hunsu

3

Этот код просто использует регулярное выражение с lookbehind для замены всех вхождений nd|rd|th|st перед разбором строки с использованием шаблона EEE MMM dd, yyyy.

String value = "Sunday February 09th, 2014"; 
String formatted = value.replaceAll("(?<=\\d)(nd|rd|th|st)", ""); 
System.out.println(formatted); 

SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd, yyyy");  
Date date = format.parse(formatted);  
+0

Вот что я сделал. – Hunsu

+0

@ user230137 Извините за отправку решения, которое вы уже использовали, но в моей защите я не могу этого предсказать, и ваш вопрос не включает в себя. Также из принятого ответа, который вы выбрали, вы не выглядите «разбор», а «форматирование». –

+0

Нет, я хотел разобрать. Я принял другой ответ, потому что из ответа я понял, что для такой даты нет маски – Hunsu

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