【问题标题】:Javascript date stored in a C# string to C# Datetime存储在 C# 字符串中的 Javascript 日期到 C# Datetime
【发布时间】:2017-05-18 10:38:10
【问题描述】:

如何将“/Date(1479250800000)/”字符串转换为 C# 日期时间?

提前致谢

【问题讨论】:

  • 这不是 JavaScript 日期字符串,它首先来自您的后端代码
  • 这是 jsonresult
  • 我知道,但是我需要将它存储在一个字符串中,因为这个字段可以包含任何类型的数据。在 JS 中,我会使用 moment("/Date(1479250800000)/") 创建日期,但我不知道如何在 C# 中获得相同的结果。非常感谢

标签: javascript c# datetime


【解决方案1】:

假设括号内的值为刻度数:

var datstr = "/Date(1479250800000)/";
long ticks = Convert.ToInt64(datstr.Substring(6, 13));
DateTime date = new DateTime(ticks);

.Net和javascript的tick值会有区别:

JavaScript Date 类型的起源是 Unix 纪元:1970 年 1 月 1 日午夜。.NET DateTime 类型的起源是 0001 年 1 月 1 日午夜。如果“滴答”是指“自纪元以来的毫秒数”,您可以调用“.getTime()

从 1900 年 1 月到 1970 年 1 月,javascript 有 621355968000000000 个 epoch 滴答。这里 10000 是每毫秒的滴答。

引自here。您需要对此进行更正。最后一行如下所示:

DateTime date = new DateTime(ticks * 10000 + 621355968000000000);

【讨论】:

  • 使用此代码我得到一个日期({02/01/0001 17:05:25}),但原始日期是“2016 年 11 月 16 日星期三 00:00:00 GMT+0100”。会不会是日期格式的问题?我需要使用 dd/mm/yyyy。提前致谢。
【解决方案2】:

如果您从 C# 发送字符串“/Date(1479250800000)/”,您将在 javascript 中将其作为日期值。但是,如果您将值发送回 C# 中的日期字段,则该值将被反序列化为 DateTime 值。您无需显式转换,只需在 DateTime 字段中获取即可。

【讨论】:

  • 你是对的,但我需要将其反序列化为字符串,因为该字段可以包含任何类型的数据。我只需要将该字符串转换为有效的 DateTime。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
  • 2014-01-06
  • 2013-06-19
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 2017-06-14
相关资源
最近更新 更多