あなたのスニペットの問題は、パターン マッチングを少し変わった方法で使用していることです。match
節のパターンに任意のコードを入れることはできません。定数 ( などDayOfWeek.Saturday
) を使用して、値が何かと等しいかどうかを確認したり、when
節で変数の代入を使用して条件を確認したりできます。
let businessdate dts =
let newdts = DateTime.FromOADate dts
// Match on day of week and hour properties of the date time
match newdts.DayOfWeek, newdts.Hour with
// For weekend, return false
| DayOfWeek.Saturday, _ | DayOfWeek.Sunday, _ -> false
// For working hours, return true
| _, h when h >= 8 && h <= 20 -> true
// For non-working weekday hours, return false
| _ -> false
アクティブ パターンを使用してこれを少し改善することもできますが、これはより高度な機能であるため、基本的なパターンに慣れたら、後で調べることをお勧めします。
PS: 実際には、銀行の休業日などのために、これはおそらくうまくいかないでしょうが、それはあなたの質問のポイントではないと思います.