【发布时间】:2018-01-27 00:54:32
【问题描述】:
我有一个 DateTime 格式的 DTO 字段
public DateTime date_joined { get; set; }
我用它把数据变成一个Json
public JsonResult Customer(int? id)
{
var user = User.Identity.Name;
if (!AccountController.IsInRole(user, "admin"))
{
return null;
}
id = id == null ? 0 : id;
var customer = db.PrmCustomers
.Where(x => x.EmailAddress != null && x.CustomerID > id)
.OrderBy(x => x.CustomerID)
.Select(x => new CustomerDTO()
{
email = x.EmailAddress,
phone = x.MobilePhoneNumber,
username = "",
first_name = x.Name,
last_name = x.Surname,
gender = x.GenderType,
customer_code = x.CustomerID,
is_active = "",
//date_joined = String.Format("{0:d/M/yyyy HH:mm:ss}", x.CreateDate.ToString()),
date_joined = x.CreateDate,
last_login = "",
date_of_birth = x.BirthDate,
//date_of_birth = String.Format("{0:d/M/yyyy HH:mm:ss}", x.BirthDate.ToString()),
password = x.Password,
email_allowed = x.IsNewsletter,
sms_allowed = x.IsSms,
verified = x.IsApprovedEmail,
social_account_facebook_uuid = "",
social_account_facebook_extra = ""
});
return Json(customer, JsonRequestBehavior.AllowGet);
}
问题是,它是这样出现的
"date_joined":"\/Date(1516965473683)\/"
我尝试将其更改为另一种格式,但我无法管理它。
首先我尝试了通常的 DateTime 格式为toString("newFOrmat"),但我得到了 Linq 错误,主要是因为在SQL Server 中无法识别 toString()
然后我遇到了这个问题format date in linq query result并在那里尝试了这个方法
return Json(customer.AsEnumerable().Select(r=>new CustomerDTO{
date_joined = r.date_joined.GetValueOrDefault().ToString("dd.MM.yyyy")
}) , JsonRequestBehavior.AllowGet);
我收到“DateTime 没有 GetValueOf() 的定义”错误,尽管我包含了正确的命名空间。
省略它并仅使用通常的 ToString("format") 会导致上述 Linq 错误。
还有其他建议吗?
编辑:我的 DTO 和输出也有其他字段。我没有将它们包括在问题中。
【问题讨论】:
-
在我看来,这种日期格式来自转换为 JSON。请参阅 Json.Net 文档中的 this page。
-
我不知道你为什么使用
JsonResult,但如果这是 Web API(2 或核心),你可以轻松更改代码样式,这样你就不必担心任何 Json(反)序列化更多。