javascript - can a JSON feed be filtered to just show time from timestamp string? -


i remotely retrieving external json feed via jsonp. json feed contains data including start_time , end_time variables in array have time data encoded in "javascript built-in json object , iso8601" this:

2016-01-21t13:00:00+10:00 

i want put data in preformatted table (there reason why) , want remove date data , leave time on value (i.e. 13:00).

is possible filter/parse entire json data object , convert these timestamp data strings show time before start using data (like preformat run directly on api feed)?

example snippet of json data:

var response={   "bookings": {     "group_id": 12306,     "name": "public meeting rooms",     "url": "http:theurlfeed.from.libcal",     "timeslots": [{       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "mahjong",       "booking_start": "2016-01-20t10:00:00+10:00",       "booking_end": "2016-01-20t11:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "mahjong",       "booking_start": "2016-01-20t11:00:00+10:00",       "booking_end": "2016-01-20t12:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "mahjong",       "booking_start": "2016-01-20t12:00:00+10:00",       "booking_end": "2016-01-20t13:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "jo tindall , sagarika",       "booking_start": "2016-01-20t14:00:00+10:00",       "booking_end": "2016-01-20t15:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "jo tindall , sagarika",       "booking_start": "2016-01-20t15:00:00+10:00",       "booking_end": "2016-01-20t16:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "james math",       "booking_start": "2016-01-20t16:00:00+10:00",       "booking_end": "2016-01-20t17:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "james math",       "booking_start": "2016-01-20t17:00:00+10:00",       "booking_end": "2016-01-20t18:00:00+10:00"     }, {       "room_id": "36615",       "room_name": "meeting room 2a",       "booking_label": "james math",       "booking_start": "2016-01-20t18:00:00+10:00",       "booking_end": "2016-01-20t19:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "ielts",       "booking_start": "2016-01-20t10:00:00+10:00",       "booking_end": "2016-01-20t11:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "recording",       "booking_start": "2016-01-20t11:00:00+10:00",       "booking_end": "2016-01-20t12:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "recording",       "booking_start": "2016-01-20t12:00:00+10:00",       "booking_end": "2016-01-20t13:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "ielts",       "booking_start": "2016-01-20t13:00:00+10:00",       "booking_end": "2016-01-20t14:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "ielts",       "booking_start": "2016-01-20t15:00:00+10:00",       "booking_end": "2016-01-20t16:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "luke",       "booking_start": "2016-01-20t16:00:00+10:00",       "booking_end": "2016-01-20t17:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "luke",       "booking_start": "2016-01-20t17:00:00+10:00",       "booking_end": "2016-01-20t18:00:00+10:00"     }, {       "room_id": "36616",       "room_name": "meeting room 2b",       "booking_label": "luke",       "booking_start": "2016-01-20t18:00:00+10:00",       "booking_end": "2016-01-20t19:00:00+10:00"     }],     "last_updated": "2016-01-20t12:40:36+10:00"   } } 

for of want do, there aren't built in methods, you're going have make own.

you need define function hours , minutes in format want timestamp. can use date constructor date object out of timestamp, use date.totimestring() , extract first 2 sections of result joined semicolon.

function gettime(timestamp) {     return new date(timestamp).totimestring().split(':').filter(function(v,k){         return k < 2;     }).join(':'); } 

then matter of looping through timeslots , assigning results of functions original properties. javascript objects pass-by-reference, means can cache object path save keystrokes.

for(var in timeslots) {     timeslots[i].booking_start = gettime(timeslots[i].booking_start);     timeslots[i].booking_end   = gettime(timeslots[i].booking_end); } 

here's simple example in action, i've slimmed down , condensed json object save space here.

// slimmed down , condensed object  var response = {      "bookings": {          "group_id": 12306,          "name": "public meeting rooms",          "url": "http:theurlfeed.from.libcal",          "timeslots": [{"room_id": "36615","room_name": "meeting room 2a","booking_label": "mahjong","booking_start": "2016-01-20t10:00:00+10:00","booking_end": "2016-01-20t11:00:00+10:00"}, {"room_id": "36615","room_name": "meeting room 2a","booking_label": "mahjong","booking_start": "2016-01-20t11:00:00+10:00","booking_end": "2016-01-20t12:00:00+10:00"},{"room_id": "36615","room_name": "meeting room 2a","booking_label": "mahjong","booking_start": "2016-01-20t12:00:00+10:00","booking_end": "2016-01-20t13:00:00+10:00"}],           "last_updated": "2016-01-20t12:40:36+10:00"      }  };    // make function, ease of use  function formattimes(bookings) {      // format timestamps      function gettime(timestamp) {          return new date(timestamp).totimestring().split(':').filter(function(v,k){              return k < 2;          }).join(':');      }            // iterate timeslots, replacing start , end values      for(var in bookings.timeslots) if(bookings.timeslots.hasownproperty(i)) {          var timeslot = bookings.timeslots[i];          timeslot.booking_start = gettime(timeslot.booking_start);          timeslot.booking_end   = gettime(timeslot.booking_end);      }            // replace last updated value      bookings.last_updated = gettime(bookings.last_updated);  }    // format times , display result  formattimes(response.bookings);  document.body.innerhtml = '<pre>' + json.stringify(response.bookings, null, 4) + '</pre>';


Comments

Popular posts from this blog

sql - VB.NET Operand type clash: date is incompatible with int error -

SVG stroke-linecap doesn't work for circles in Firefox? -

python - TypeError: Scalar value for argument 'color' is not numeric in openCV -