2014-03-28 28 views
2

我有一個格式爲「HH:mm」的字符串,我想在不久的將來獲得Joda的DateTime。例如,如果現在將是3月28日的16:33,並且我給出字符串"5:10",那麼我想要得到一個「2014-03-29 05:10」的DateTime,即明天早上5點,不是今天上午5點。Joda DateTime指定小時:分鐘,但比現在晚

我試圖讓一個班輪代碼來做到這一點(因爲喬達有利於單行),在這種風格:

String input = "16:33"; 
DateTime dt = ... // Do fancy Joda one-liner 
assert dt.isAfterNow() == true; 

聽起來很簡單,我可以做到這一點大約20行代碼,我只是認爲必須有一個聰明的方法來做到這一點。

不過,我想也可以用一個班輪滿足了類似的情況:

int hour = 16; 
int minute = 33; 
DateTime dt = ... // Do fancy Joda one-liner 
assert dt.isAfterNow() == true; 
+0

你的意思是這樣嗎? http://stackoverflow.com/questions/16461361/add-one-day-into-joda-time-datetime –

+0

不,因爲如果當前時間是「15:01」,而我輸入「」16:33「那麼兩人應該在同一天。我有興趣在未來獲得最近的時刻。 –

回答

1

嗯,這聽起來就像是將這個分成更合適的類型是個好主意:

LocalTime userTime = ...; // Parse the user input 
DateTime now = DateTime().now(); 
LocalDate today = now.toLocalDate(); 
LocalDate resultDate = now.toLocalTime().isBefore(userTime) ? today : today.plusDays(1); 
DateTime result = resultDate.toDateTime(userTime, now.getTimeZone()); 
+0

很好的答案。它不需要成爲一個班輪,但很好地指出LocalDate。 –

相關問題