0

この質問には質の高い回答がいくつかあることは知っていますが、それを機能させるための構文に苦労しています。

$.getJSON( "ticketweb.json",
            function(data){
              $.each(data.events, function(){
              $('ul#listings').append("<li><div class=event-col><span class=name>" +this.eventname+ "</span><p>" +this.eventurl+ "</p><div class=date>" +this.dates.startdate+ "</div><p>" +this.eventimages+ "</p><p>" +this.venue.name+ "</p></div></li>");

            });
        });

どこ

<div class=date>" +this.dates.startdate+ "</div> 

.append の一部は、フォーマットしたいビットです。私は多くの方法を試しましたが、より普遍的な json 形式の方法を上記の構文に組み込む方法がわかりません。

編集: 日付形式は理想的には次のようになります: 11 月 17 日 (土) ですが、17.11.12 も問題ありません。

私が現在取得している出力は20120629100000です。同様の質問で見たようなフォワードまたはバックスラッシュ(/ Date(1224043200000)/)はありません。ここに欠けている優れたコーディングプラクティスの要素があるかどうかはわかりません. 私のjsonファイルは、以下に入力された完全に有効です:

 "events":   [
    {
  "eventid": "4419605",
  "facebookeventid": "",
  "eventname": "",
  "description": "",
  "eventurl": "",
  "additionallistingtext": "",
  "status": "SalesEnded",
  "tags": "",
  "spotifyuri": "",
  "dates":       {
    "startdate": "20120529010000",
    "enddate": "20121231235500",
    "onsaledate": "20120309084000",
    "announcedate": "20120309115333",
    "timezone": "EDT"
  },
  "venue":       {
    "venueid": "210795",
    "name": "Online",
    "venueurl": "",
    "city": "Online",
    "state": "",
    "postalcode": "00000",
    "country": "US",
    "address": "Online",
    "twitterid": "",
    "venueimages":         {
      "large": "",
      "small": ""
    }
  },
  "eventimages": [""],
  "prices":       {
    "pricelow": "$195.00",
    "pricehigh": "$195.00",
    "pricedisplay": "$195.00"
  },
  "attractionList":       [
            {
      "sequence": "0",

      "billing": "1.00",
      "genre": "Seminar/Lecture",
      "links": "",
      "media": ""
    },
            {
      "sequence": "1",
      "billing": "0.75",
      "links": "",
      "media": ""
    },
            {
      "sequence": "2",
      "billing": "0.75",
      "links": "",
      "media": ""
    }
  ]
},
4

1 に答える 1

2

私が正しく理解している場合は、2つのオプションがあります。サーバーから送信される日付の形式を変更するか、クライアントが日付を受信したら形式を変更します。

後者を達成する方法の例:

var dateStr = this.dates.startdate // 20120629100000
var formattedDate = dateStr.substr( 6, 2) + '/'
                  + dateStr.substr( 4, 2) + '/'
                  + dateStr.substr( 0, 4) + ' ' 
                  + dateStr.substr( 8, 2) + ':'
                  + dateStr.substr(10, 2) + ':'
                  + dateStr.substr(12, 2);

... '<div class="date">' + formattedDate + '</div>' ...

この特定の例では、次のように出力されます。29/06/2012 10:00:00 (DD/MM/YYYY HH:MM:SS)

于 2012-11-16T12:44:27.403 に答える