如何在F#中打印格式化日期

时间:2015-06-02 07:57:30

标签: .net f#

我在F#中有这个日期

let myDate = new DateTime(2015, 06, 02)

并希望在控制台窗口中输出“2015/06/02”。我试过了:

Console.WriteLine(sprintf "%s" myDate.ToString("yyyy/MM/dd"))

但这不会编译(编译器说,“连续参数应该用空格或元组分隔,涉及函数或方法应用程序的参数应该用括号括起来”)

如何将日期输出为“2015/06/02”?

更新:

正如Panagiotis Kanavos评论的那样,这将有效:

Console.WriteLine("{0:yyyy/MM/dd}", myDate)

1 个答案:

答案 0 :(得分:9)

您可以轻松调用带有格式字符串的ToString重载:

let formatted = myDate.ToString "yyyy/MM/dd"

但是,sprintf不支持简短形式,但您可以这样做:

printfn "%s" (myDate.ToString "yyyy/MM/dd")

如果您觉得在对象上调用方法功能不够,您也可以define a function for this purpose

let inline stringf format (x : ^a) = 
    (^a : (member ToString : string -> string) (x, format))

这将使您能够以许多有趣的方式组合函数。例如,您可以像这样写入控制台:

myDate |> stringf "yyyy/MM/dd" |> printfn "%s"

或者像这样:

(stringf "yyyy/MM/dd" >> printfn "%s") myDate