2

ac# datetime から js 日付変数を作成するのに問題があります。jquerys .val() メソッドの奇妙な動作に気付きました。

入力要素は、次のように日付情報を保持します。

@Html.HiddenFor(t => t.Tasks[i].Task.Deadline, new { @class = "task-end", @Value = Model.Tasks[i].Task.Deadline.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds })

JavaScriptでは、私はこれをやっています:

var date = new Date($("MyDateFromHiddenField").val());

この日付をコンソールに書き込むと、無効な日付になります。

$("MyDateFromHiddenField").val()コンソールに書き込むと、1372854195130

この番号で日付をハードコーディングすると、有効な日付が得られます。

var date = new Date(1372854195130); <---Valid

何らかの理由で、new Date() は .val() メソッドが好きではありません。

例: http://jsfiddle.net/hZ7bm/1/

4

5 に答える 5

3

問題は.val()、文字列を返し、new Date()数値を期待することです。通話を次のように更新できます。

var date = new Date(parseInt($("#myhidden").val(), 10));

更新版はhttp://jsfiddle.net/hZ7bm/2/にあります。

于 2013-09-05T06:41:22.487 に答える
2

.valによって返された文字列を Date コンストラクターに渡す代わりに、parseInt を使用します。

var date = new Date(parseInt($("MyDateFromHiddenField").val(), 10));

文字列として無効になります。

new Date("1372854195130")
// Invalid Date
于 2013-09-05T06:40:24.793 に答える
2

Dateコンストラクターへのパラメーターは、文字列ではなく数値にする必要があります。parseInt他の人が提案したように試すか、試すことができます:

var date = new Date(+$("#myhidden").val());

+文字列を数値に変換します

デモ

于 2013-09-05T06:41:56.503 に答える
2

入力フィールドの値はstringデータ型です。したがって、またはをinteger使用して変換する必要がありますparseInt(string, radix)Number(string)

var date = new Date(parseInt($("#myhidden").val(), 10));

また

var date = new Date(Number($("#myhidden").val()));
于 2013-09-05T06:41:56.580 に答える
0

これを試して:

 var date = new Date(parseInt(1372854195130, 10));
  var curr_month = ('0' + (date.getMonth() + 1));
  var curr_date = ('0' + (date.getDate()));
  var curr_year = date.getFullYear();
于 2013-09-05T06:53:08.640 に答える