5

F# 度量单位中是否使用 TIME?

4

2 回答 2

12

有一个标准的 SI 单位“秒”可用于表示时间。您需要参考 FSharp.PowerPack.dll,然后您可以使用以下内容:

open Microsoft.FSharp.Math

let minute = 60<SI.s>
let twoMinutes = minute * 2

分钟/小时等没有内置单位,因为这些不是标准单位(实际上只是秒乘以某个数字)。但是,您也可以根据需要定义分钟:

[<Measure>]
type mins =
  static member of_seconds(sec) = sec / 60<SI.s> * 1<mins>

// converting seconds to minutes 
let timeInMinuts = mins.of_seconds(twoMinutes)

如果这是您的问题,您不能使用标准 System.DateTime 类型的单位,但您可以创建一个包装器,以您想要的单位公开实际时间(秒/分钟):

open System

type DateTimeUnits(dt:DateTime) = 
  static member Now = new DateTimeUnits(DateTime.Now)
  member x.Second = dt.Second * 1<SI.s>
  member x.Minute = dt.Minute * 1<mins>
于 2009-08-28T02:53:59.753 回答
2

似乎时间可以在其中:

http://blogs.msdn.com/andrewkennedy/archive/2008/08/29/units-of-measure-in-f-part-one-introducing-units.aspx

但是,即使不是,您也可以编写自己的单位。

MS 的这篇文章也可能有用,具体取决于您想要的单位。 http://msdn.microsoft.com/en-us/library/dd233243%28VS.100%29.aspx

于 2009-08-28T01:15:16.957 回答