我在服务器上节省了UTC时间,当我将它传递给前端时,它会给我类似这样的信息:"/Date(1543396029630)/"
我的问题是:这是int
的utc时间戳吗?
我尝试使用在线转换器转换int,但是结果与我在数据库中的记录不同。
我的数据库记录是"28/11/2018 23:12:33"
public ActionResult test()
{
var date = _context.Batches.FirstOrDefault(c => c.Batches_BatchID == 1)
.Batches_ClosedDate;
var dateString = _context.Batches.FirstOrDefault(c => c.Batches_BatchID == 1)
.Batches_ClosedDate.ToString();
return Json(new
{
dateString,
date,
}, JsonRequestBehavior.AllowGet);
}
结果是:
{
"dateString": "28/11/2018 23:12:33",
"date": "/Date(1543399953230)/"
}
我去了一个在线转换器,它给我的日期与dateString
不同吗?
我的帐户受到一些否决问题的阻止,有趣的是,即使我已经接受了答案,我也必须重新编辑它们。我不明白这样做的意义。这个stackoverflow系统。
现在,除了继续编辑我的问题外,我基本上无能为力,并且所有问题都已得到解答。这太荒谬了!!!
答案 0 :(得分:2)
1543396029630
是Unix时间毫秒格式的表示形式:
UTC星期三18年11月28日09:07:09
您可以像下面这样在javascript中将其转换为Date
:
var date = new Date(unix_timestamp_in_milliseconds);
由于您得到的时间与您预期的时间不同,因此可能会发生许多事情,与以下内容有关:
DateTime.Kind
实例上的date
属性,并且JsonSerializerSettings.DateTimeZoneHandling
和JsonSerializerSettings.DateFormatHandling
属性将是相关的。请参见Json.Net documentation,以获取有关它们如何相互作用的指南。
我个人建议使用ISO-8601格式格式化日期时间,并将其解析为前端代码中的Date()
。您可以通过在自己的代码中显式格式化字符串或配置Json序列化器使其自动完成此操作。
如果您正在使用默认的Json.Net序列化器(在ASP.NET内核中),则可以在Startup
类中使用类似的配置序列化器(未经测试-只是为了给您一个主意) :
services.AddMvc()
.AddJsonOptions(opt =>
{
opt.SerializerSettings.DateFormatHandling =
DateFormatHandling.IsoDateFormat;
opt.SerializerSettings.DateTimeZoneHandling =
DateTimeZoneHandling.Unspecified
// Or maybe DateTimeZoneHandling.Utc - you should test!
});