c# - 如何解析看起来像这样的 DateTime:'Date(1543396029630)'
问题描述
我在服务器上保存 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 系统感到非常沮丧.
现在,我基本上什么都做不了,只能继续编辑我的问题,而且他们都已经得到了回答。这是荒唐的 !!!
解决方案
1543396029630
是 Unix 时间毫秒格式表示:
UTC 时间 2018 年 11 月 28 日星期三 09:07:09
您可以将其转换为Date
javascript 中的一个,如下所示:
var date = new Date(unix_timestamp_in_milliseconds);
由于您的时间与预期不同,因此可能会发生很多事情,与:
DateTime.Kind
您date
实例上的属性,以及- 您的 Json 序列化程序正在使用的设置(例如,如果您使用的是 Json.NET,则
JsonSerializerSettings.DateTimeZoneHandling
andJsonSerializerSettings.DateFormatHandling
属性将是相关的。
有关它们如何交互的指南,请参阅 Json.Net 文档。
我个人建议使用 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!
});
推荐阅读
- c# - 带有 if else 条件和 && 逻辑运算符的复选框
- visual-studio - 如何在 Visual Studio 2017 中更改断点的位置
- docker - Zookeeper 服务发现和 Docker
- javascript - Laravel 中的 ajax 419 错误
- ruby-on-rails - 将类动态解析为全局范围
- android - 转到该片段后,底部导航栏仍处于选中状态
- python - Python根据第一列中的键组合两列
- vim - 用VIM在C中应用“尤达条件”的最短方法是什么
- ios - 无法检索额外的标头 - Mailcore
- javascript - 悬停时在相对标签内滚动绝对图像