10

JavaScriptからMVCのコントローラーにDate値を取得し、それを.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

以下は、.NETMVCコントローラーのデフォルトのDateTimeモデルバインダーで適切に解析されます。

var myJsDate = new Date();
var myDotNetDate = myJsDate.toISOString();
于 2015-05-12T07:27:35.903 に答える
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
于 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 – Worlds Time Standardはタイムゾーンではないため、タイムゾーンに変更する必要があります

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

今それはする準備ができています

2015年11月19日木曜日16:30:18GMT

一行で

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

2015年11月19日木曜日16:30:18GMT

C#の場合

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

変換は必要ありません。.NETMVCコントローラーのデフォルトのDateTimeモデルバインダーは、JavaScriptのDateオブジェクトで正常に機能します。

Moment.jsを使用する

1).NET DateTime-> JavaScript Date

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

2)JavaScript Date-> .NET DateTime

var dotNetDateTime = jsDate;
于 2016-03-03T14:25:04.230 に答える