2012-12-14 56 views
2

我有一些訂單在一週內的不同時間出現,並且我有一系列規則來確定何時可以接受訂單。例如,我們不接受週三下午4:45至5:15之間的訂單。所以如果訂單在下午3點進來,一切都很好。如果訂單在下午5點進入,我們需要拒絕它。這些規則基於一週中的每一天並每天更改。Joda - 確定當前時間是否在指定的每週時間段內

我的問題是,使用喬達時間,什麼是檢查當前時間是否在這個時間窗口的最佳方法是什麼?

我對其他技術開放,但我目前使用通過斯卡拉工具時間包裝喬達時間。

我目前有這樣的工作:

val now = DateTime.now 
    val wednesdayNoTradeInterval:Interval = ?? 

    now.getDayOfWeek match { 
    case WEDNESDAY => wednesdayNoTradeInterval.contains(now) 
    } 

回答

2

您可以嘗試這樣的事:

implicit def dateTimeToLocalTime(dateTime: DateTime) = dateTime.toLocalTime 
type Interval[T] = (T, T) 
def during(interval: Interval[LocalTime])(time: LocalTime) = interval match { 
    case (start, end) => start < time && time < end 
} 

def day(day: Int)(time: DateTime) = time.dayOfWeek.get == day 

val fourish = new LocalTime(16, 45) 
val afternoon = during((fourish, (fourish + (30 minutes)))) _ 
val wednesday = day(WEDNESDAY) _ 
val thursday = day(THURSDAY) _ 
def acceptingOrders = !{ 
    val now = DateTime.now 
    wednesday(now) && afternoon(now) 
    thursday(now) && afternoon(now) 
} 

而且使用這樣的:

acceptingOrders // ? 
+0

這看起來很有趣,我可能會放棄這樣的嘗試 – Noah

0

對於每週的每一天,存儲訂單被拒絕的LocalTime實例對列表。

然後,當訂單放置在給定的DateTime時,獲取與dateTime的星期幾關聯的對,將DateTime轉換爲LocalTime,並檢查此LocalTime是否包含在至少一對的開始和結束之間。

相關問題