есть стандартная единица СИ 'секунда', которую вы можете использовать для представления времени. Вам нужно будет сослаться на 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>