4

ページの1つにjQuery日付ピッカーがあるMVC3アプリケーションがあります:

<script>
    $(function () {
        $("#expirationDate").datepicker();
        $("#expirationDate").datepicker("option", "dateFormat", "dd/mm/yy");
    });
</script>

using (Html.BeginForm())
{
    @Html.TextBox("expirationDate")
    <input type="submit" value="Submit" />
}

コントローラのアクションは次のようになります。

public ActionResult DoStuff(String expirationDate)
{
    return View();
}

デートピッカーは見た目は問題ありませんが、動作がおかしいです。

たとえば、2012年12月31日のように日付を入力して(形式を指定したことに注意してくださいdd/mm/yy)、ボタンを押します。expirationDate制御がコントローラーに入り、変数が値を保持していることがわかり31/12/2012ます。次にアクションが戻り、テキストボックスが空になっているのがわかります。

次に、2012年10月12日を試してみます-アクションに入りますが、ページが再び表示されると、2012年12月10日になります-明らかに月と日が入れ替わります。おそらく31/12の場合、それらを交換すると無効な日付が生成され、それが破棄されることがわかりました。

形式が明示的に指定されているにもかかわらず、日と月が入れ替わるのはなぜですか?

4

2 に答える 2

5

これが私がそれを修正した方法です。私が変更され

$("#expirationDate").datepicker();
$("#expirationDate").datepicker("option", "dateFormat", "dd/mm/yy");

$("#expirationDate").datepicker({ dateFormat: 'dd/mm/yy' });

そして今、それはうまく機能します。

私の推測では、元のコードは壊れているだけです。私は元のコードを作成しませんでした、私はそれをdatepickerページで見つけました。

于 2012-12-07T12:08:15.457 に答える
1

javascriptの形式dd/mm/yy01/12/2012

javascriptyyではと同じ結果になりますyyyy(これはgetYear()getFullYear()

年の最後の2桁だけを取得したい場合は、次のようにjavascriptで自分で休憩をとる必要があります。

$(function() {

  $( "#datepicker" ).datepicker({
    changeMonth: true,
    onClose: function( selectedDate ) {
      var dt = new Date(selectedDate),
          txt = (dt.getDate() + 100).toString().slice(1) + "/" + 
                (dt.getMonth() + 101).toString().slice(1) + "/" + 
                (dt.getFullYear()).toString().slice(2);

       $( "#datepicker" ).val(txt);
    }
  });

  $( "#datepicker" ).datepicker( 
    "option", "dateFormat", "dd/mm/yy" 
  );

});

ただし、ASP.NETを使用していることを指定した場合は、.NETで使用することをお勧めします。

string dt = Request["expirationDate],
       expDate = DateTime.Parse(dt).ToString("dd/mm/yy");
于 2012-12-07T08:01:01.657 に答える