DateTime到javascript日期

AJ.*_*AJ. 95 .net javascript c#

从Stackoverflow的另一个答案是从Javascript日期到.net DateTime的转换:

long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);
Run Code Online (Sandbox Code Playgroud)

但是怎么做呢?DateTime到Javascript日期?

Axe*_*ger 113

尝试:

return DateTime.Now.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds
Run Code Online (Sandbox Code Playgroud)

编辑:真正的UTC更好,但我们需要保持一致

return DateTime.UtcNow
               .Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
               .TotalMilliseconds;
Run Code Online (Sandbox Code Playgroud)

虽然,只要两个日期都在同一时区,第二个想法就没关系了.

  • 您可能希望使用DateTime.UtcNow而不是DateTime.Now (5认同)
  • 关于你的第二个想法:它在转换到夏令时期间或从夏令时过后都很重要(我总是要想到很难记住哪个:).在过渡期间,2:00到3:00的小时重复两次.这意味着在一小时内,javascript日期将关闭一小时.UTC没有DLS,因此没有这个问题. (2认同)

Yai*_*vet 41

JavaScript Date构造函数接受自Unix纪元(1970年1月1日00:00:00 UTC)以来的毫秒数.这是将.Net DateTime对象转换为JavaScript日期的C#扩展方法:

public static class DateTimeJavaScript
{
   private static readonly long DatetimeMinTimeTicks =
      (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;

   public static long ToJavaScriptMilliseconds(this DateTime dt)
   {
      return (long)((dt.ToUniversalTime().Ticks - DatetimeMinTimeTicks) / 10000);
   }
}
Run Code Online (Sandbox Code Playgroud)

JavaScript用法:

var dt = new Date(<%= DateTime.Today.ToJavaScriptMilliseconds() %>);
alert(dt);
Run Code Online (Sandbox Code Playgroud)


Mar*_*vic 22

使用Moment.js只需使用:

var jsDate = moment(netDateTime).toDate();
Run Code Online (Sandbox Code Playgroud)

netDateTime你的DateTime变量序列化在哪里,类似于"/Date(1456956000000+0200)/".

  • @Kamil momentjs [可以解析 ASP.NET json 数据](https://momentjs.com/docs/#/parsing/asp-net-json-date/),vanilla js 不能 (2认同)

Ren*_*ira 19

你可以在你的行动中尝试这个:

return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
Run Code Online (Sandbox Code Playgroud)

这在您的Ajax成功中:

success: function (resultDateString) {
    var date = new Date(resultDateString);
}
Run Code Online (Sandbox Code Playgroud)

或者在你的视图中:( Javascript加C#)

var date = new Date('@DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")');
Run Code Online (Sandbox Code Playgroud)

  • 简单快速地理解 (2认同)

mun*_*sor 10

这应该做的伎俩:

date.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds
Run Code Online (Sandbox Code Playgroud)


Kaj*_*jbo 6

另一个迟到的答案,但这里缺少这个。如果你想/Date(1425408717000)/在 javascript 中处理序列化的转换,你可以简单地调用:

var cSharpDate = "/Date(1425408717000)/"
var jsDate = new Date(parseInt(cSharpDate.replace(/[^0-9 +]/g, '')));
Run Code Online (Sandbox Code Playgroud)

资料来源:阿米尔萨希布