我想创建一个程序来解析一个字符串中有意义的日期和时间。我希望能够给以下几种输入,并创建一个日期/时间对象:从字符串解析日期/时间?
5 o'clock
5 p.m.
5 a.m.
5
530
530 a.m.
530 p.m.
Tuesday at [insert any above string here]
the 30th at [same as above]
May 12th at [same as above]
today at [same as above]
tomorrow at [same as above]
不包含日/日期可以假设今天是任何字符串,任何时间没有上午/下午指定可以被认为是在上午9点到下午8点59分之间发生。 我很快就意识到什么乱七八糟的在写代码的这一部分后成为:
private void createEvent(String phrase) {
int hour;
int day = 0;
String dayOfWeek = "";
if (phrase.contains("o'clock")) {
hour = Integer.parseInt(phrase.substring(phrase.indexOf("o'clock")-3, phrase.indexOf("o'clock")-1).trim());
out.write(""+hour);
}
if (phrase.contains("tomorrow"))
day = (Calendar.DAY_OF_WEEK % 7)+1;
if (phrase.contains("sunday") || day == 1) {
dayOfWeek = "Sunday"; day = 1; }
else if (phrase.contains("monday") || day == 2) {
dayOfWeek = "Monday"; day = 2; }
else if (phrase.contains("tuesday") || day == 3) {
dayOfWeek = "Tuesday"; day = 3; }
else if (phrase.contains("wednesday") || day == 4) {
dayOfWeek = "Wednesday"; day = 4; }
else if (phrase.contains("thursday") || day == 5) {
dayOfWeek = "Thursday"; day = 5; }
else if (phrase.contains("friday") || day == 6) {
dayOfWeek = "Friday"; day = 6; }
else if (phrase.contains("saturday") || day == 7) {
dayOfWeek = "Saturday"; day = 7; }
else {
dayOfWeek = "Today"; day = 0; }
}
任何人都可以提供一些方向?
我会专注于每个案件seperatly,也许创建一个简单的'格式化工具'的基本目的。将它们全部添加到中央'FormatFactory'中。这将允许您根据需要增加可能的格式化器数量(或者在需要时排除一些格式器) – MadProgrammer 2013-05-13 05:42:24
您的字符串中可能还有其他什么?整个字符串是否与时间有关,还是可能包含其他信息?例如:“我会在五点钟在车站接你” – GHC 2013-05-13 05:45:23