如何在f#中检查日期是否在营业时间内?

时间:2013-10-03 18:05:28

标签: f#

我试图在fsharp中编写一个简单的函数来检查营业时间,但它不起作用。

这就是我所拥有的:

let businessdate dts =
    let newdts = DateTime.FromOADate dts
    match newdts with
    | not DayOfWeek.Saturday & not DayOfWeek.Sunday & DateTime.Hour >= 8 & DateTime.Hour <= 20 -> 1
    | _ -> 0

这失败了。 Fsharp中的DateTime是否可能没有成员小时?我怎么能这样做?

1 个答案:

答案 0 :(得分:9)

您的代码段的问题在于您使用模式匹配有点奇怪。您不能在match子句的模式中放置任意代码 - 您可以使用常量(如DayOfWeek.Saturday)来检查值是否等于某个值,或者您可以使用{{1的变量赋值}}子句检查条件:

when

你可以通过使用活动模式使这一点变得更好,但这是一个更高级的功能,所以我建议你在熟悉基本模式之后再进行研究。

PS:在实践中,这可能不会起作用,因为像银行假期这样的事情,但我想这不是你问题的重点。