文字列から意味のある日付と時刻を解析するプログラムを作成しようとしています。次の種類の入力を提供し、日付/時刻オブジェクトを作成できるようにしたい:
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]
曜日/日付を含まない文字列は今日であると見なすことができ、AM/PM の指定がない時間は午前 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; }
}
誰かが方向性を提供できますか?