使用razor转换日期时间格式
以下有什么问题吗?
@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
@item.Date 显示 20/11/2005 12:00 am,我想显示 2011 年 11 月 20 日
What is wrong with the following?
@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
@item.Date is showing 20/11/2005 12:00 a.m and I want to display 20 Nov 2011
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(13)
尝试:
或者您可以使用
[DisplayFormat]视图模型上的
属性:在您的视图中:
Try:
or you could use the
[DisplayFormat]
attribute on your view model:and in your view simply:
这是解决方案:
在 ToString() 之前使用 Value。
This is solution:
Before ToString() use Value.
在 MVC 4.0 中尝试一下
Try this in MVC 4.0
[DisplayFormat] 属性仅在 EditorFor/DisplayFor 中使用,而不是由 TextBoxFor 等原始 HTML API 使用。我通过执行以下操作使其工作:
模型:
视图:
输出:
2011 年 12 月 30 日
相关链接:
http:// /msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx
The [DisplayFormat] attribute is only used in EditorFor/DisplayFor, and not by the raw HTML APIs like TextBoxFor. I got it working by doing the following,
Model:
View:
Output:
30/12/2011
Related link:
http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx
下面的代码会对您有所帮助
Below code will help you
对于 Razor,将文件 DateTime.cshtml 放在 Views/Shared/EditorTemplates 文件夹中。 DateTime.cshtml 包含两行,并生成一个日期格式为 9/11/2001 的 TextBox。
For Razor put the file DateTime.cshtml in the Views/Shared/EditorTemplates folder. DateTime.cshtml contains two lines and produces a TextBox with a date formatted 9/11/2001.
一般来说,书面月份转义为 MMM,4 位年份转义为 yyyy,因此您的格式字符串应类似于“dd MMM yyyy”
In general, the written month is escaped as MMM, the 4-digit year as yyyy, so your format string should look like "dd MMM yyyy"
我无法完全根据上述建议来完成这项工作。包括 DataTypeAttribute
[DataType(DataType.Date)]
似乎解决了我的问题,请参阅:模型
视图
HTH
I was not able to get this working entirely based on the suggestions above. Including the DataTypeAttribute
[DataType(DataType.Date)]
seemed to solve my issue, see:Model
View
HTH
对于所有给定的解决方案,当您在现代浏览器(如 FF)中尝试此操作时,并且您已设置
将渲染的正确模型 mvc(5) (输入的 type 设置为 >日期基于您模型中的日期设置!)
浏览器将显示
要解决此问题,您需要将类型更改为文本而不是日期(如果您想使用自定义日历)
For all the given solution, when you try this in a modern browser (like FF), and you have set the correct model
mvc(5) wil render (the type of the input is set to date based on your date settings in your model!)
And the browser will show
To fix this you need to change the type to text instead of date (also if you want to use your custom calender)
根据安扬·康德(Anjan Kant)上面所说的,这就是我想出的(本来会给你一个赞成票,但我太新了)
Based on what Anjan Kant said above, this is what I came up with (would have given you an upvote but I'm too new)
我在另一个问题中使用了这个答案,效果非常好:
@(item.Startdate.HasValue ? item.Startdate.Value.ToString("dd/MM/yyyy") : "Date is Empty")
如果日期列为空,Value.ToString会抛出错误,所以我们使用条件语句
灵感来自 @miroslav-holec 和 @shaiju-t 的回答
I used this from answer in another question and it works very good:
@(item.Startdate.HasValue ? item.Startdate.Value.ToString("dd/MM/yyyy") : "Date is Empty")
if the date column is null, Value.ToString will throw error, so we use condition statement
inspired from answers by @miroslav-holec and @shaiju-t
更改日期类型的简单方法即:
Easy way to change date type i.e:
您可以使用 jQuery 日历来获得更好的结果,我们使用以下代码完成了此任务
,C# 代码使用如下
You can use jQuery calendar for better result, we completed this task with following code
and the C# code use as follows