【问题标题】:Entity Framework DateTime ASP.NET实体框架日期时间 ASP.NET
【发布时间】:2015-07-21 11:27:14
【问题描述】:

我正在使用带有实体框架 v 6.0.0 的 web api 2。我有一个表,其中包含一个名为 StudyGroupStartDate 的日期列,所以我使用了这样的数据注释:

    [Column(TypeName = "Date")]
    public DateTime? StudyGroupStartDate { get; set; }

这就是它在数据库中的保存方式: 2015 年 7 月 20 日。 但是,当我检索它并显示它时,它会像这样返回: 2015-07-20T00:00:00(我希望它就像它在数据库中的保存方式)

请注意,我没有使用 MVC,我创建了一个空的 Web 应用程序并选择了 Web api,所以我只使用使用模型生成的控制器。这是我的控制器的一个示例。

    // GET: api/StudyGroups
    public List<StudyGroup> GetStudyGroups()
    {
        return db.StudyGroups.Where(a=>a.IsDeleted==false).ToList();
    }

我刚刚更改了 GET 请求的生成代码,以将结果作为列表检索,条件为 is_deleted 为 false。

【问题讨论】:

    标签: asp.net entity-framework datetime asp.net-web-api


    【解决方案1】:

    我不知道你的问题到底是什么。您必须在前端格式化 DateTime,即解析此日期时间值 (2015-07-20T00:00:00),然后根据需要进行格式化。

    其他可能性是将DateTime 转换为String,执行如下操作:

    // GET: api/StudyGroups
    public List<Object> GetStudyGroups()
    {
        return db.StudyGroups.Where(a=>a.IsDeleted==false)
          .Select(it => new { studyGroup = it, it.StudyGroupStartDate.ToString("M/dd/yyyy") })
          .ToList();
    }
    

    还有第三种可能性,但我认为这太棘手了:您可以创建一个 String 属性以仅将该字段返回为 String,并使用您想要的格式(见下文):

    [Column(TypeName = "Date")]
    public DateTime? StudyGroupStartDate { get; set; }
    
    [Column(TypeName = "DateStr")]
    public String StudyGroupStartDateStr { 
      get {
        return StudyGroupStartDate.ToString("M/dd/yyyy");
      }
    }
    

    记住:在这种情况下,您需要使用/显示DateStr 列,而不是Date 列。

    【讨论】:

    • 我的问题是 StudyGroupStartDate 列的类型是日期,当我检索它时,它返回为 DateTime(通知 2015-07-20T00:00:00(我不想要)vs 2015 年 7 月 20 日(我想要)),我尝试了你的解决方案,但它给了我一个错误:无效的匿名类型成员声明器
    • 正如我所说,你得到了这种格式,因为这是 DateTime.ToString 方法的默认格式,在这种情况下,你需要解析,然后用你想要的格式格式化 DateTime。在你的情况下这可能吗?
    • 我在我的答案中添加了另一个解决方案,再次检查。
    • 它不起作用,因为它说 StudyGroupStartDate 不明确,我最终在前端处理它。
    • 对不起,我复制粘贴了代码,并没有更改新属性的名称,您需要将第二个StudyGroupStartDate更改为StudyGroupStartDateStr
    猜你喜欢
    • 1970-01-01
    • 2011-06-06
    • 2018-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多