我使用Entity Framework从SQL Server获取日期时间。我的数据库中的格式是2013-01-01 00:00:00.000
,当我通过JSON格式的实体框架获取它时,它是"\\/Date(1356980400000+0500)\\/"
。
这是我的代码
public class SurveyData
{
[DataMember]
public DateTime? CreatedDate { get; set; }
}
var surveyDataList = (from survey in context.FDT_SURVEY
where survey.Name == surveyName
select new SurveyData
{
SurveyID = SqlFunctions.StringConvert((double)survey.SURVEY_ID).Trim(),
CreatedDate = survey.CREATED_DATE,
}
);
在我的数据库中,CREATED_DATE
的数据类型为datetime
。
无法理解问题所在。任何帮助!
答案 0 :(得分:3)
试试这个:
[DisplayFormat(DataFormatString = "{0,d}")]
[DataType(DataType.DateTime)]
public DateTime? CreatedDate { get; set; }
答案 1 :(得分:1)
实体框架不会以JSON格式返回任何内容。它使用数据填充.NET对象,或使用.NET对象中的数据填充数据库。我相信,附加调试器会显示CreatedDate
中包含正确的值。
实际问题更可能是因为JSON没有“日期”或“日期时间”类型的概念,尽管对问题有评论。见The "right" JSON date format。一些序列化代码使用.NET SurveyData
类并使用.NET框架的JSON序列化程序(可能是DataContractJsonSerializer
)将其序列化为JSON,这是以您看到的格式写出来的。这可能是WCF,也可能是旧版本的ASP.NET MVC或Web API。
更高版本的ASP.NET使用NewtonSoft JSON.net库来执行对象的序列化。默认情况下,它们使用ISO 8601格式,这是世界上大多数人在JSON对象中期望的日期或日期时间字段。