【问题标题】:How can convert datetime form Net to JavaScript如何将日期时间形式 Net 转换为 JavaScript
【发布时间】:2019-09-27 03:40:08
【问题描述】:

请不要与ASP.NET Parse DateTime result from ajax call to javascript dateParsing DateTime format passed from Ajax to “dd/MM/yyyy”重复,我已仔细阅读。但我的问题是差异。

我有来自 asp.net 的数据通过下面的 ajax 加载。

 Datetime in c#: "2019-05-04" 

 The result in ajax is: "/Date(1556895600000+0900)/"

你可以看到结果自动添加时间UTC偏移到DateTime,我不知道为什么。

如何在上面的 javascript 与数据中转换为 DateTime?

var d = new Date(("/Date(1556895600000+0900)/").match(/\d+/)[0] * 1)
console.log(d)

您可以看到:结果“2019-05-03T15:00:00.000Z”,但我预计结果“2019-05-04”。 我该怎么做?

【问题讨论】:

  • 这是一个无效的日期值。您可以访问 C# 代码吗?
  • 否则,您需要将 9 小时添加到 d 才能获得正确的值。
  • @异端猴:public DateTime TheDate { get;放; },我的系统为韩国、越南、中国、日本发布。但是在韩国加 9,越南加 7...=> 这不是很好的解决方案。
  • 您可以设置 C# 以输出您想要的任何日期格式,包括 UTC 格式的 ISO 8601,您可以直接将其传递给 new Date(),而无需进行大量解析工作。

标签: javascript asp.net ajax


【解决方案1】:

看起来我不是约会专家,但以下看起来很有说服力

const parse = str => {
    let [_, timestamp, offsetHours, offsetMinutes] = str.match(/(\d+)([+-]\d\d)(\d\d)/).map(Number);
    
    let date = new Date(timestamp);
    date.setHours(date.getHours() + offsetHours);
    date.setMinutes(date.getMinutes() + offsetMinutes);
    return date;
}

console.log(
    parse("/Date(1556895600000+0900)/")
    .toJSON()
)
console.log(
    parse("/Date(1556895600000-0700)/")
    .toJSON()
)

这是一个 ES3 版本,以防它在旧浏览器中不起作用(正如 OP 在 cmets 中所说的那样)

function parse(str) {
    var matches = str.match(/(\d+)([+-]\d\d)(\d\d)/).map(Number);
    var timestamp = matches[1];
    var offsetHours = matches[2];
    var offsetMinutes = matches[3];
  
    var date = new Date(timestamp);
    date.setHours(date.getHours() + offsetHours);
    date.setMinutes(date.getMinutes() + offsetMinutes);
    return date;
}


console.log(
    parse("/Date(1556895600000+0900)/")
    .toJSON()
)
console.log(
    parse("/Date(1556895600000-0700)/")
    .toJSON()
)

【讨论】:

  • 感谢 Devansh J。但它仅适用于 Chrome。如何在 IE 上修复它?
  • 再次抱歉。如何使用 timeofset
猜你喜欢
  • 2012-05-28
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2011-10-05
  • 2012-02-09
  • 1970-01-01
  • 2014-08-10
相关资源
最近更新 更多