我如何解析日期时间,如下所示:'Date(1543396029630)'

时间:2018-11-28 22:52:37

标签: c# datetime

我在服务器上节省了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系统。

现在,除了继续编辑我的问题外,我基本上无能为力,并且所有问题都已得到解答。这太荒谬了!!!

1 个答案:

答案 0 :(得分:2)

1543396029630是Unix时间毫秒格式的表示形式:

UTC星期三18年11月28日09:07:09

您可以像下面这样在javascript中将其转换为Date

var date = new Date(unix_timestamp_in_milliseconds);

由于您得到的时间与您预期的时间不同,因此可能会发生许多事情,与以下内容有关:

  1. 您的DateTime.Kind实例上的date属性,并且
  2. 您的Json序列化程序正在使用的设置(例如,如果您使用的是Json.NET,则JsonSerializerSettings.DateTimeZoneHandlingJsonSerializerSettings.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!
        });