使用F#处理日期

时间:2017-02-07 22:53:02

标签: f#

我真是F#的新手。下面是我尝试创建一个计算两个日期之间差异的函数。

let test date =
    let today = DateTime.Now
    let fromdate = DateTime.Parse(date)
    let count = Convert.ToInt32(today - fromdate)
    date

以上代码提示错误

  

System.InvalidCastException:无法转换类型的对象   ' System.TimeSpan'输入' System.IConvertible'。

2 个答案:

答案 0 :(得分:1)

您不需要转换因应用"减去"而导致的时间跨度。运营商到两个日期。 下面的截图是我尝试修复你的函数以及它返回的值的一个例子。

Result of applying the fixed function

答案 1 :(得分:1)

两个日期时间之间的差异将为您提供TimeSpan object,您可以在其上进一步操作。这应该是函数中的最后一个语句,因为它将用作返回值。您可以在链接中查看各种属性和方法的MS文档。严格来说,这是BCL的一部分,所以它只是.NET而不仅仅是F#(你会在VB或C#中做同样的事情)。如果您想进一步优化您的功能,您还应该检查DateTime.TryParse并处理未收到有效日期的可能性。

open System

let test date =
    let today = DateTime.Now
    let fromdate = DateTime.Parse(date)
    (today - fromdate).Days

test "2017/12/31" // val it : int = -325