10

我从 JavaScript 获取 Date 值到 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);

任何人都可以给我一个示例代码吗?谢谢!

4

4 回答 4

23

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

var myJsDate = new Date();
var myDotNetDate = myJsDate.toISOString();
于 2015-05-12T07:27:35.903 回答
7

DateTime与其解析文本表示,不如从时间戳构造 a 会更健壮。从 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
于 2012-05-22T10:11:11.910 回答
2

这是我做了什么以及为什么。我希望这有帮助。

JS 日期var d = new Date()

返回:2015 年 11 月 19 日星期四 08:30:18 PST

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#

DateTime DateCreated= DateTime.Parse(ol);
于 2015-11-19T17:51:07.510 回答
1

您不需要任何转换:.NET MVC 控制器中的默认 DateTime 模型绑定器可以很好地与 JavaScript Date 对象配合使用。

使用Moment.js

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

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

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

var dotNetDateTime = jsDate;
于 2016-03-03T14:25:04.230 回答