Можно ли разобрать даты, как это в Java:Можно ли разобрать эти даты
Sunday February 09th, 2014 or Sunday February 21st, 2014.
Я ищу путь с SimpleDateFormat. Thanks
Можно ли разобрать даты, как это в Java:Можно ли разобрать эти даты
Sunday February 09th, 2014 or Sunday February 21st, 2014.
Я ищу путь с SimpleDateFormat. Thanks
Вы можете использовать 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";
}
}
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/
Что такое цифры, которые запросили ОП? – PeterMmm
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
У меня ошибка с DateFields. Что мне следует импортировать? – Hunsu
Этот код просто использует регулярное выражение с 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);
Вот что я сделал. – Hunsu
@ user230137 Извините за отправку решения, которое вы уже использовали, но в моей защите я не могу этого предсказать, и ваш вопрос не включает в себя. Также из принятого ответа, который вы выбрали, вы не выглядите «разбор», а «форматирование». –
Нет, я хотел разобрать. Я принял другой ответ, потому что из ответа я понял, что для такой даты нет маски – Hunsu
Вы пробовали 'E \t Именины в week' и' M \t Месяц в year'? – Smutje
Propbaly вы должны выровнять ординалы с регулярным выражением перед использованием DateFormat.parse(). – PeterMmm
Вот что я сделал. Я хотел просто знать, есть ли способ с SimpleDateFormat. – Hunsu