我在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)
答案 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