2012-09-10 127 views
1

我想在这种格式( “YYYY/MM/DD”)格式日期时间值

下面

格式化日期时间值是代码中,M使用这样做

DateTime? date = DateTime.Now; 
DateTime? formattedDate = Convert.ToDateTime(date.Value.ToString("yyyy/MM/dd")); 
Console.WriteLine(formattedDate); 
Console.ReadLine(); 

代码工作正常,但你可以看到在上面的代码中,我已经宣布日期时间变量为空这反向导致问题

请建议我在做错了上面的代码。

因为我得到的输出,因为这9/10/2012 12:00:00 AM

感谢, Aaman

回答

6

的问题是,你所谓的formattedDate是一个DateTime实际上又一实例。本地.NET DateTime结构中没有格式的概念。能说说你只格式化时,将其转换为字符串:

DateTime date = DateTime.Now; 
string formattedDate = date.ToString("yyyy/MM/dd")); 
Console.WriteLine(formattedDate); 

,或者如果你想使用一个可为空的DateTime:

DateTime? date = DateTime.Now; 
string formattedDate = date.Value.ToString("yyyy/MM/dd")); 
Console.WriteLine(formattedDate); 

但你的问题被打上asp.net-mvc-3,还有其他格式化值的方法。例如,使用您的视图模型的[DisplayFormat]属性:

[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)] 
public DateTime? Date { get; set; } 

,并在你的看法,如果你想显示您的视图模型的价值:

@Html.DisplayFor(x => x.Date) 

,或者如果你想生成的输入域与适当格式化的值:(X => x.Date)和

@Html.EditorFor(x => x.Date) 
+0

它是为@ Html.DisplayFor工作正常@ Html.EditorFor(X => x.Date),但是当我绑定这@ Html.TextBoxFor(x => x.Date)然后再次同样的问题 – aamankhaan

+0

是的,这是正常的。 DisplayFormat属性仅适用于编辑器/显示模板。你为什么要使用TextBoxFor? –

+0

根据要求,我想要显示在文本框...这也是禁用的用户... – aamankhaan