格式化C#中的日期时间值

aam*_*aan 1 c#-4.0 asp.net-mvc-3

我想以这种格式格式化日期时间值("yyyy/MM/dd")

下面是代码,m用来这样做

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

代码工作正常,但你可以在上面的代码中看到我已声明datetime变量为null,反过来导致问题

请在上面的代码中建议我做错了什么.

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

谢谢,阿曼

Dar*_*rov 6

问题是你调用formattedDate的实际上是DateTime的另一个实例.原生.NET DateTime结构中没有格式概念.只有在将其转换为字符串时才能谈论格式:

DateTime date = DateTime.Now;
string formattedDate = date.ToString("yyyy/MM/dd"));
Console.WriteLine(formattedDate);
Run Code Online (Sandbox Code Playgroud)

或者如果你想使用可以为空的DateTime:

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

但是,由于您的问题已被标记asp.net-mvc-3,因此还有其他格式化值的方法.例如,使用[DisplayFormat]视图模型上的属性:

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

并在您的视图中,如果要显示视图模型的值:

@Html.DisplayFor(x => x.Date)
Run Code Online (Sandbox Code Playgroud)

或者如果要生成具有正确格式化值的输入字段:

@Html.EditorFor(x => x.Date)
Run Code Online (Sandbox Code Playgroud)