2012年5月17日木曜日

ASP.NET → JavascriptへのDateTimeオブジェクトの受け渡し

備忘録に

APS.NETアプリ(ここではASP.NET MVC3)から、javascriptへJSON形式でDateTimeオブジェクトを送った場合

●C#側
 public ActionResult GetDate()
 {
      return Json(DateTime.Now, JsonRequestBehavior.AllowGet);
 }


.js側(ここではjQueryのajaxを例に)
 <script type="text/javascript">
     $(function(){
         $.ajax({
             url: "http://サーバURL/GetDate",
             type: "GET",
             success: function(data){
                 alert(data)
             }
     });
 </script>

出力
 \Date(1337261816234)\

このような表示になってしまうと思います。
そこで、





■C#(サーバ)側で整形する場合
    return Json(DateTime.Now.ToLongDateString()
            + "/ " + DateTime.Now.ToLongTimeString(),
            JsonRequestBehavior.AllowGet);

DateTime.ToLongDateString()等でStringにしてから渡す。

>参考: 日時(DateTimeオブジェクト)を文字列に変換する
>http://dobon.net/vb/dotnet/string/datetimeformat.html


■js側で整形する場合

だいたいサーバ側で整形すべきですが、ちょっと複雑ですが.js側でも以下で表示できます。

    alert(new Date(parseInt(data.Now.substr(6)))
           .toLocaleString());

jsのDateオブジェクトを作って初期化し、toLocaleString()等で整形して表示する。

>参考: Dateオブジェクトのメソッド
>http://www.tohoho-web.com/js/date.htm#newDate




0 件のコメント:

コメントを投稿