C# “中的0是什么?”;{0:MM dd yyyy}”;做
我是C/MVC世界的新手。今天我花了很多时间研究如何以我想要的格式显示DateTimeOffset对象。终于让它这样工作了C# “中的0是什么?”;{0:MM dd yyyy}”;做,c#,asp.net-mvc,datetime-format,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替换为任何其他数字或将其完全删除
Html.TextBoxFor(model => model.DeliveryDate,"{0:MM/dd/yyyy}",
new { htmlAttributes = new { @class = "datepicker" } })
但我仍然不理解格式字符串中“0”的重要性。如果我将0替换为任何其他数字或将其完全删除,则页面将断开。有人能帮我理解这一点吗?这是一个带参数的格式字符串(例如在Console.WriteLine或string.format中使用)。
{0}
将是第一个参数的占位符,{0:mm/dd/yyyy}
只是一个格式字符串,用于将第一个参数转换为字符串。使用时,可以为参数传递空格,例如{0}
,{1}
等,这些是作为方法参数传递的索引。asp.net剃须刀助手也是如此
对于示例:{0:0.00}
,您还可以提供索引后的格式,作为带2位小数的数字的格式,或日期等的{1:dd/MM/yyyy}
字符串插值
有一种新的方法可以使用字符串插值来实现它。基本上,您可以在不生成新字符串的情况下对字符串上的值进行压缩。对于示例:
var i = 18;
var s = $"You are {age} years old.";
var today = $"Today is {DateTime.Now:D}";
var date = DateTime.Now.Add(1);
var tommorrow = $"Tommorrow is {date:dd/MM/yyyy}";
由于字符串以$
开头,因此可以在{
和}
之间传递参数。您还可以使用与在string.format
上使用的格式相同的格式来格式化数据。对于示例:
var i = 18;
var s = $"You are {age} years old.";
var today = $"Today is {DateTime.Now:D}";
var date = DateTime.Now.Add(1);
var tommorrow = $"Tommorrow is {date:dd/MM/yyyy}";
0是参数/属性的占位符(在本例中)DeliveryDate
。。类似于String.Format
示例。。。因此,当您的视图被渲染时。。0将被替换为以MM/dd/yyyy格式保存的DeliveryDate
中的任何值
格式字符串中的{0}是一个格式项。0是将在该位置插入其字符串值的对象的索引。(索引从0开始。)如果要插入的对象不是字符串,则在将其插入结果字符串之前,将调用其ToString方法将其转换为字符串。请参阅string.Format()的文档:
简而言之,当模型呈现为HTML文本时,DeliveryDate
对象值将传递给String.Format()
,其中{0}
指示传递给Format()
的值数组中第一个值的索引。所以{0:MM/dd/yyyy}
只是指使用日期组件格式化数组中的第一个值。基本上,它会在内部执行类似的操作:
String s = SomeValueArray[0].ToString("MM/dd/yyyy");
0将被模型中的datevalue替换。此格式的DeliveryDate MM/dd/yyyyy截止日期无效谢谢大家的回答。现在我明白了。我在想,这个数字可以用来抵消日期的天数或其他什么。感谢您的回复。非常有用。