实体框架6日期时间问题

本文关键字:时间 问题 日期 框架 实体 | 更新日期: 2023-09-27 18:04:40

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

我已经找遍了所有的地方,但是没有找到解决这个问题的方法。我有datetime存储在数据库中。当我在文本输入中插入日期时间的格式时(手动而不是使用日期选择器),它似乎无法发布,因为它要求适当的格式。

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

实体框架6日期时间问题

这个适合我:

模型
[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'});}

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

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