将JavaScript日期转换为.NET DateTime

13

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

字符串无法被识别为有效的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);

有人能给我提供一份示例代码吗?谢谢!

4个回答

25

以下内容可以很好地使用 .NET MVC 控制器中的默认 DateTime modelbinder 进行解析:

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

完美的解决方案! - user2145393

7

与其解析文本表示,从时间戳构造一个 DateTime 更加健壮。要从 JS Date 获取时间戳:

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

2
从.NET 4.6开始使用DateTimeOffset.FromUnixTimeMilliseconds(msec).DateTime - Andriy Tolstoy
@AndriyTolstoy,简单、优雅且可行的解决方案应该被接受为答案。 - Nelson Garcia

2

您不需要进行任何转换:.NET MVC控制器中的默认DateTime modelbinder可以很好地处理JavaScript Date对象。

使用Moment.js

1).NET DateTime -> JavaScript日期

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

2) JavaScript 日期 -> .NET 日期时间

var dotNetDateTime = jsDate;

2

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

JS日期 var d = new Date()

返回结果:Thu Nov 19 08:30:18 PST 2015

C#不支持此格式,因此需要将其转换为UTC:

var dc = d.toUTCString()

返回值: 2015年11月19日星期四16:30:18 UTC

UTC是世界时间标准,不是一个时区,因此您需要将其转换为一个时区。

var cr = dc.replace("UTC","GMT")

现在已经准备就绪

Thu, 19 Nov 2015 16:30:18 GMT

一句话概括

var ol = d.toUTCString().replace("UTC","GMT")`

2015年11月19日 16:30:18格林威治标准时间

适用于C#

DateTime DateCreated= DateTime.Parse(ol);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接