2011-11-01 38 views
0

我很難在將來解析日期,我會提供一些幫助!通過解析輸入來添加一個日期到目前爲止

這是事情,我想添加一個解析日期到當前日期(將來有)。問題是,我可以有許多種日期格式,如:

  • DD
  • MM-DD
  • YYYY-MM-DD

因此如果用戶設置類似5 ,返回的日期將是(在我們的遊戲中)2011-11-05。 如果他設置了02-14,那將是2012-02-14

但是,假設我們是4th of november,並且用戶設置了11-03,它將是2012-11-03而不是2011-11-03,因爲它已經過去了。

我試着玩日曆,日期,簡單格式,但我不能讓它工作。

我的解析器(使用SimpleDateFormat)正在工作。

你能幫我實現嗎?我不是要求一個完整的代碼,只是讓我走上正軌!

謝謝! :)

回答

1

我對jodatime有很好的體驗 - http://joda-time.sourceforge.net/。在那裏簽出Dateformatters。

它有一個非常廣泛的API,讓你不喜歡的東西添加和減去日期 - 考慮到時區和夏令等

+0

我試圖使用DateFormatters,我可以匹配使用它們的字符串中的日期,但我怎麼能它在當前日期+給出的是什麼? (如果僅給予一天,則將月份和年份設置爲最新)? –

+0

我不認爲這裏有什麼內置的。但你可以做這樣的事情:foo = new DateTime();新的DateTime(foo.getYear,foo.getMonth,userInputDay,0,0,0); – Pavan

+0

使用Joda並添加時間而不是僅僅使用格式創建它是一種方法。 –

2

既然你有固定的可接受的輸入日期格式的名單,dateFormat的寬鬆字段設置爲false和檢查,看看是否有一個滿足你的工作做完,或者如果引發異常隨時隨地下一模式

dateFormat = new SimpleDateFormat(PATTERN_ONE); 
dateFOrmat.setLenient(false); 
dateFormat.parse(INPUT_STRING); 
// if an exception is caughtm try with next pattern 
+0

你說的寬容:真正在你的描述,但其設置爲false在代碼。我應該信任哪一個? ;) –

+0

那麼你的提示確實幫助我解決了其他問題:) –

+0

啊..設置它爲虛假的代碼:) –