gpt4 book ai didi

日期范围的 F# 生成器?

转载 作者:行者123 更新时间:2023-12-04 16:36:54 28 4
gpt4 key购买 nike

我正在尝试编写一个使用生成器语法生成日期时间列表的函数:

let dateRange = 

let endDate = System.DateTime.Parse("6/1/2010")
let startDate = System.DateTime.Parse("3/1/2010")

seq {
for date in startDate..endDate do
if MyDateClass.IsBusinessDay(date) then yield date
}

但是生成器 ('seq') 块没有正确解析。它需要一个时间跨度。虽然生成器语法似乎非常适合我想要做的事情,但对于除两个数字之外的任何东西都相当不直观。

  • 是否可以使用生成器语法来创建 DateTime 范围?

  • 有没有比我写的更好的方法来考虑如何创建范围(即“in”子句)
  • 最佳答案

    TimeSpan有一个静态 Zero属性,那么你可以做类似 startDate .. TimeSpan(1,0,0,0) .. endDate 的事情.即使没有,您也可以创建一个包装器来做同样的事情:

    open System

    type TimeSpanWrapper = { timeSpan : TimeSpan } with
    static member (+)(d:DateTime, tw) = d + tw.timeSpan
    static member Zero = { timeSpan = TimeSpan(0L) }

    let dateRange =
    let endDate = System.DateTime.Parse("6/1/2010")
    let startDate = System.DateTime.Parse("5/1/2010")
    let oneDay = { timeSpan = System.TimeSpan(1,0,0,0) }

    seq {
    for date in startDate .. oneDay .. endDate do
    if MyDateClass.IsBusinessDay(date) then yield date
    }

    关于日期范围的 F# 生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721052/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com