在MVC 3 C中更改日期时间#

我正在使用带有C#的MVC 3,我在下拉列表中显示日期时遇到问题。 日期显示如下: 4/21/2011 12:00:00 AM,但我只想以这种方式格式化它们: 2011年4月21日 ,这正是我数据库中的格式。

数据库中的日期属性是日期而不是日期时间。

模型中的代码:

[DisplayFormat(DataFormatString = "{mm/dd/yyyy}", ApplyFormatInEditMode=false)] public DateTime? booksDate { get; set; } 

控制器看起来像这样:

  var booksDates = from dates in db.Books orderby dates.booksDate select new { dates.booksDate}; ViewBag.Dates = BooksDates.Distinct(); 

最后我的视图中的代码:

 Books dates @Html.DropDownList("booksDate", new SelectList(ViewBag.Dates as System.Collections.IEnumerable, "booksDate", "booksDate"), "Select a date")  

哪里我错了?

谢谢

您可以尝试使用常规html下拉列表并手动设置html值。 我确信有一种更好的方法,它可能很脏,但它可以完成工作。

控制器:

 ViewBag.Dates = BooksDates.Distinct(); 

视图:

  

如果我没有完全关闭, DataFormatString应如下所示:

 DataFormatString = "{0:MM/dd/yyyy}" 

甚至更简单的使用短日期格式:

 DataFormatString="{0:d}" 

您可以扩展帮助程序类以在视图中执行该作业。

 public static class FormatHelper { public static IHtmlString ToDate( this HtmlHelper helper, DateTime datetime ) { return new HtmlString( datetime.ToShortDateString() ); } } 

在视图中:

 @Html.ToDate( Model.Date ) 

别忘了导入名称空间来查看。

就像在控制器中一样:

 ViewBag.Date = Convert.ToDateTime(SelectedDate); 

在视野中

 @Convert.ToDateTime(ViewData["Date"].ToString()).ToShortDateString() 

输出如:

2017年3月2日

您可以通过执行以下操作在纯c#上执行此操作:

 string date = Convert.ToDateTime(date).ToShortDateString(); 

如果你使用的是sql,你可以这样做:

 select field1, convert(nvarchar(10), field2, 101) 

来自哪里//无论如何,

让我解释一下这是什么:

-field2是包含日期的字段。 -nvarchar(10)是您要解除的类型。 这并不重要,因为它是你所回归的类型(转换的结果)。 就像它是一个选择,你不关心这里的数据类型。 它仅用于显示数据。 数字10是你得到的字符串的长度。

-field2:

要转换的字段(带小时的日期)

101:这是风格。 这告诉field2必须只打印月/日/年。

有很多风格,你应该谷歌他们!

我希望它有效。