2012-05-22 30 views
7

我正從JavaScript中的日期值在MVC控制器和我想將其解析到.NET格式的日期時間,但它給我的錯誤,如:轉換的JavaScript日期到.NET日期時間

的字符串未被識別爲有效的日期時間。

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); 

任何人都可以給我一個示例代碼嗎?謝謝!

回答

6

而不是解析文本表示,而是從時間戳中構造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 
+0

從.NET 4.6使用'''DateTimeOffset.FromUnixTimeMilliseconds(毫秒).DateTime''' –

5

下,在一個默認的日期時間ModelBinder的解析以及.NET MVC控制器:

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

這工作完美,更簡潔 – WraithNath

1

這是我做的和爲什麼。我希望這有幫助。

JS日期var d = new Date()

回報:週四11月19日8點三十分18秒的PST 2015年

C#不喜歡這種格式,以便將其轉換爲UTC:

var dc = d.toUTCString() 

回報:週四, 19 Nov 2015 16:30:18 UTC

UTC - 世界時間標準不是時區,因此您需要將其更改爲時區

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

現在它已準備好

星期四,2015年11月19日16時30分十八秒GMT

在一行

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

星期四,2015年11月19日16時30分十八秒GMT

爲C#

DateTime DateCreated= DateTime.Parse(ol); 
1

您不需要任何轉換:.NET MVC控制器中的默認DateTime modelbinder可以很好地處理JavaScript Date對象。

Moment.js使用

1)。NET的DateTime - > javascript日期

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

2)JavaScript的日期 - > .NET日期時間

var dotNetDateTime = jsDate; 
相關問題