什么是" {0:MM dd yyyy}"怎么办?

时间:2016-03-31 19:05:20

标签: c# asp.net-mvc datetime-format

我是C#/ MVC世界的新手。今天我花了很多时间弄清楚如何以我想要的格式显示DateTimeOffset对象。最后让它以这种方式工作。

Html.TextBoxFor(model => model.DeliveryDate,"{0:MM/dd/yyyy}", 
                     new { htmlAttributes = new { @class = "datepicker" } })  

但我仍然不明白' 0' 0的重要性。在格式字符串中。如果我用任何其他数字替换0或完全删除它,页面会中断。有人能帮助我理解这个吗?

5 个答案:

答案 0 :(得分:2)

当您使用string.Format时,您可以为{0}{1}等参数传递空间,这些参数是您作为方法参数传递的索引。 asp.net razor助手也是如此。

您还可以在索引分隔:之后提供格式,样本为:{0:0.00},格式为2位小数或{1:dd/MM/yyyy}日期等。

字符串插值

有一种使用String Interpolation实现它的新方法。基本上,您可以在字符串上连接值而不生成新字符串。样本:

var i = 18;
var s = $"You are {age} years old.";

由于您使用$启动字符串,因此您可以在{}之间传递参数。您也可以使用相同的格式来格式化您在string.Format上使用的数据格式。样本:

var today = $"Today is {DateTime.Now:D}";

var date = DateTime.Now.Add(1);
var tommorrow = $"Tommorrow is {date:dd/MM/yyyy}";

答案 1 :(得分:2)

来自String.Format Method

格式字符串中的{0}是格式项。 0是将在该位置插入字符串值的对象的索引。 (索引从0开始。)如果要插入的对象不是字符串,则在将其插入结果字符串之前,会调用其ToString方法将其转换为1。

答案 2 :(得分:1)

这是一个带参数的格式字符串(例如在Console.WriteLine或string.Format中使用)。 {0}将是第一个参数的占位符,{0:mm/dd/yyyy}只是一个格式字符串,用于将第一个参数转换为字符串。

答案 3 :(得分:1)

请参阅String.Format()的文档:

https://msdn.microsoft.com/en-us/library/system.string.format.aspx

简而言之,当模型呈现为HTML文本时,DeliveryDate对象值将传递给String.Format(),其中{0}表示数组中第一个值的索引值传递给Format()。所以{0:MM/dd/yyyy}只是意味着使用日期组件格式化数组中的第一个值。基本上,它会在内部执行类似的操作:

String s = SomeValueArray[0].ToString("MM/dd/yyyy");

答案 4 :(得分:0)

0是您的参数/属性的占位符(在本例中为DeliveryDate ..类似于String.Format示例...所以当您的View被渲染时... 0将被替换为DeliveryDate MM / dd / yyyy

格式保存的值