实体框架6日期时间问题

时间:2015-07-26 18:42:34

标签: c# asp.net-mvc entity-framework datetime

从捕获与日期时间格式相关的前端(视图)到后端(Controller)的用户输入时,似乎存在明显的问题。

我已经全神贯注,无法找到我正在观察的问题的任何解决方案。我将日期时间存储在数据库中。当我在文本输入中插入日期时间格式时出现问题(手动而不是使用日期选择器) )它似乎无法发布,因为它要求适当的格式。

当我选择合适的格式时,应用程序崩溃并且无法解析格式。是否有任何文章可以帮助我实现或理解日期时间格式和EntityFramework如何工作?

2 个答案:

答案 0 :(得分:1)

EF和数据库都没有问题。 Datetime作为日期时间存储在数据库中,而不是以任何特定的字符串格式存储。当您使用文本作为输入时,您有责任将其转换为有效的日期时间值。考虑1/2/2015作为字符串。你能说出它的日期吗?不,你不能。可能是2015年1月2日或2015年2月1日。或者考虑15/1/2015。对于使用欧洲文化之一的机器而言,它是2015年1月15日的有效日期,但对于美国文化来说将是无效的日期。如果您使用DateTimePicker返回DateTime值而不是字符串,那么从一开始就可以防止出现问题。 您可以将字符串转换为这样的日期时间:

DateTime x;
DateTime? valueToSendToDatabase = DateTime.TryParse(txtDatetime.Text,
         CultureInfo.CurrentCulture, 
         DateTimeStyles.None, 
         out x)
         ? x
         : (DateTime?)null;

答案 1 :(得分:1)

这对我有用:

模型

[Display(Name = "Startdate")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime StartedAt { get; set; }

查看

if (!Modernizr.inputtypes.date) {
    $('input[type=date]').datepicker({
        dateFormat: 'yy-mm-dd'});}