将JavaScript日期转换为.NET日期时间

将JavaScript日期转换为.NET日期时间,javascript,.net,date,datetime,Javascript,.net,Date,Datetime,我从JavaScript向MVC中的控制器获取了一个日期值,我想将其解析为.NET格式的DateTime,但它给了我一个错误,例如: 该字符串未被识别为有效的日期时间 JavaScript日期的格式为: "Wed May 23 2012 01:40:00 GMT+0200 (W. Europe Daylight Time)" 我试过这个,但不起作用: DateTime.ParseExact(begin.Substring(1, 24), "ddd MMM d yyyy HH:mm:ss", C

我从JavaScript向MVC中的控制器获取了一个日期值,我想将其解析为.NET格式的DateTime,但它给了我一个错误,例如:

该字符串未被识别为有效的日期时间

JavaScript日期的格式为:

"Wed May 23 2012 01:40:00 GMT+0200 (W. Europe Daylight Time)"
我试过这个,但不起作用:

DateTime.ParseExact(begin.Substring(1, 24), "ddd MMM d yyyy HH:mm:ss", CultureInfo.InvariantCulture);

谁能给我一个示例代码?谢谢

与其解析文本表示,不如从时间戳构造
DateTime
。要从JS
日期获取时间戳,请执行以下操作:

var msec = date.getTime();
并将
msec
(表示毫秒数)转换为
DateTime

var date = new DateTime(1970, 1, 1, 0, 0, 0, 0); // epoch start
date = date.AddMilliseconds(msec); // you have to get this from JS of course

以下内容与.NET MVC控制器中的默认DateTime modelbinder解析良好:

var myJsDate = new Date();
var myDotNetDate = myJsDate.toISOString();

以下是我所做的事情和原因。我希望这有帮助

JS Date
var d=new Date()

返回时间:2015年11月19日星期四08:30:18太平洋标准时间

C#不喜欢此格式,因此将其转换为UTC:

var dc = d.toUTCString()
返回时间:2015年11月19日星期四16:30:18 UTC

UTC–世界时间标准不是时区,因此您需要将其更改为时区

var cr = dc.replace("UTC","GMT")
现在它准备好了

2015年11月19日星期四格林尼治标准时间16:30:18

一行

var ol = d.toUTCString().replace("UTC","GMT")`
2015年11月19日星期四格林尼治标准时间16:30:18

对于C#


您不需要任何转换:.NETMVC控制器中的默认DateTime modelbinder可以很好地与JavaScript日期对象配合使用

使用

1) .NET DateTime->JavaScript Date

var jsDate = moment(dotNetDateTime).toDate();
var dotNetDateTime = jsDate;
2) JavaScript日期->.NET日期时间

var jsDate = moment(dotNetDateTime).toDate();
var dotNetDateTime = jsDate;

从.NET4.6开始,使用
DateTimeOffset.fromUnixtimeMissions(毫秒).DateTime
完美的解决方案!