如何在 F# 中打印格式化日期
How to print formatted date in F#
我在 F# 中有这个日期
let myDate = new DateTime(2015, 06, 02)
并希望在控制台中输出类似“2015/06/02”的内容window。我试过了:
Console.WriteLine(sprintf "%s" myDate.ToString("yyyy/MM/dd"))
但这不会编译(编译器说,“连续的参数应该用空格或元组分隔,涉及函数或方法应用程序的参数应该用括号括起来”)
如何将日期输出为“2015/06/02”?
更新:
正如 Panagiotis Kanavos 评论的那样,这将起作用:
Console.WriteLine("{0:yyyy/MM/dd}", myDate)
您可以轻松调用采用格式字符串的 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
我在 F# 中有这个日期
let myDate = new DateTime(2015, 06, 02)
并希望在控制台中输出类似“2015/06/02”的内容window。我试过了:
Console.WriteLine(sprintf "%s" myDate.ToString("yyyy/MM/dd"))
但这不会编译(编译器说,“连续的参数应该用空格或元组分隔,涉及函数或方法应用程序的参数应该用括号括起来”)
如何将日期输出为“2015/06/02”?
更新:
正如 Panagiotis Kanavos 评论的那样,这将起作用:
Console.WriteLine("{0:yyyy/MM/dd}", myDate)
您可以轻松调用采用格式字符串的 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