我想創建一個程序來解析一個字符串中有意義的日期和時間。我希望能夠給以下幾種輸入,並創建一個日期/時間對象:從字符串解析日期/時間?
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