Stackoverflow 上的另一个答案是从 Javascript 日期到 .net DateTime 的转换:
long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);
但是反过来怎么做呢?日期时间到 Javascript 日期?
Stackoverflow 上的另一个答案是从 Javascript 日期到 .net DateTime 的转换:
long msSinceEpoch = 1260402952906; // Value from Date.getTime() in JavaScript
return new DateTime(1970, 1, 1) + new TimeSpan(msSinceEpoch * 10000);
但是反过来怎么做呢?日期时间到 Javascript 日期?
尝试:
return DateTime.Now.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds
编辑:真正的 UTC 更好,但我们需要保持一致
return DateTime.UtcNow
.Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
.TotalMilliseconds;
虽然,再想一想也无所谓,只要两个日期在同一时区即可。
JavaScript 日期构造函数接受自 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);
}
}
JavaScript 用法:
var dt = new Date(<%= DateTime.Today.ToJavaScriptMilliseconds() %>);
alert(dt);
您可以在 Action 中尝试此操作:
return DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss");
这在你的 Ajax 成功中:
success: function (resultDateString) {
var date = new Date(resultDateString);
}
或者在你的视图中:(Javascript 加 C#)
var date = new Date('@DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss")');
使用Moment.js只需使用:
var jsDate = moment(netDateTime).toDate();
netDateTime
您的 DateTime 变量在哪里序列化,例如"/Date(1456956000000+0200)/"
.
这应该可以解决问题:
date.Subtract(new DateTime(1970, 1,1)).TotalMilliseconds