2016-04-29 5 views
0

Я делаю запрос на Yahoo finance xchange, но кажется, что время обновления не является самым обновленным. Кажется случайным, для каждого обновления это значение изменяется, иногда чаще всего обновляется, а иногда и меньше обновляется.Yahoo finance xchange - последнее время обновления

Есть ли способ всегда получать последний раз, когда он был обновлен?

спасибо.

 $.getJSON("https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.xchange%20where%20pair%20in%20(%22USDUSD%22%2C%22USDEUR%22%2C%20%22USDJPY%22%2C%20%22USDCNY%22%2C%20%22USDGBP%22%2C%20%22USDBRL%22%2C%20%22EUREUR%22%20%2C%22EURUSD%22%2C%20%22EURJPY%22%2C%20%22EURCNY%22%2C%20%22EURGBP%22%2C%20%22EURBRL%22)&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=", function (data) { 
     var indices = '<p style=\"border:1px solid #ccc; width:auto; padding:0 10px; background:#ddd;\"><strong>' + data.query.results.rate[0].Name + '</strong> ' + money(data.query.results.rate[0].Rate) + '</p>' + 
         '<p><strong>' + data.query.results.rate[1].Name + '</strong> (Fechamento ' + money(data.query.results.rate[1].Rate) + ') - ' + data.query.results.rate[1].Date + ' - ' + data.query.results.rate[1].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[2].Name + '</strong> (Fechamento ' + money(data.query.results.rate[2].Rate) + ') - ' + data.query.results.rate[2].Date + ' - ' + data.query.results.rate[2].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[3].Name + '</strong> (Fechamento ' + money(data.query.results.rate[3].Rate) + ') - ' + data.query.results.rate[3].Date + ' - ' + data.query.results.rate[3].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[4].Name + '</strong> (Fechamento ' + money(data.query.results.rate[4].Rate) + ') - ' + data.query.results.rate[4].Date + ' - ' + data.query.results.rate[4].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[5].Name + '</strong> (Fechamento ' + money(data.query.results.rate[5].Rate) + ') - ' + data.query.results.rate[5].Date + ' - ' + data.query.results.rate[5].Time + '</p>' + 
         '<p style=\"border:1px solid #ccc; width:auto; margin:20px 0 0; padding:0 10px; background:#ddd;\"><strong>' + data.query.results.rate[6].Name + '</strong> ' + money(data.query.results.rate[6].Rate) + '</p>' + 
         '<p><strong>' + data.query.results.rate[8].Name + '</strong> (Fechamento ' + money(data.query.results.rate[8].Rate) + ') - ' + data.query.results.rate[8].Date + ' - ' + data.query.results.rate[8].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[7].Name + '</strong> (Fechamento ' + money(data.query.results.rate[7].Rate) + ') - ' + data.query.results.rate[7].Date + ' - ' + data.query.results.rate[7].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[9].Name + '</strong> (Fechamento ' + money(data.query.results.rate[9].Rate) + ') - ' + data.query.results.rate[9].Date + ' - ' + data.query.results.rate[9].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[10].Name + '</strong> (Fechamento ' + money(data.query.results.rate[10].Rate) + ') - ' + data.query.results.rate[10].Date + ' - ' + data.query.results.rate[10].Time + '</p>' + 
         '<p><strong>' + data.query.results.rate[11].Name + '</strong> (Fechamento ' + money(data.query.results.rate[11].Rate) + ') - ' + data.query.results.rate[11].Date + ' - ' + data.query.results.rate[11].Time + '</p>'; 
     $('#info').html(indices); 
    }); 
    money = function (n) { 
     var 
      c = 4, 
      d = ',', 
      t = '.', 
      s = n < 0 ? "-" : "", 
      i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", 
      j = (j = i.length) > 3 ? j % 3 : 0; 
     return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : ""); 
    }; 
+1

что вы имеете в виду время обновления? где время обновления, которое вы хотите? в ответе? – ochi

+0

@ochi Да, когда я запускаю свой код, где находится «data.query.results.rate [xx] .Time» он обменивается на время обновления, которое кажется случайным, а не последним. * извините за мой плохой английский язык. –

+0

и вы хотите сортировать к тому времени? или получить только самую последнюю? - ваш английский в порядке, не беспокойтесь. - Кстати, знаете ли вы, что есть версия SO на португальцах? (http://pt.stackoverflow.com/) – ochi

ответ

1

Ну, я заканчивал строительство даты для каждого элемента в массиве (карте), а затем фильтровать их на самую раннюю дату (уменьшить)

что вы хотите сделать с этой датой, я я не уверен, но вот это ...

оБНОВЛЕНО

обновлен вернуть полную запись JSON, содержащий последнюю отметку даты/времени (вместо возврата только последнюю дату)

// sample response 
 
var response = {"query":{"count":12,"created":"2016-04-29T20:13:39Z","lang":"en-us","results":{"rate":[{"id":"USDUSD","Name":"USD/USD","Rate":"1.0000","Date":"N/A","Time":"N/A","Ask":"1.0000","Bid":"1.0000"}, 
 
{"id":"USDEUR","Name":"USD/EUR","Rate":"0.8775","Date":"4/29/2016", "Time":"12:38pm","Ask":"0.8777","Bid":"0.8775"},{"id":"USDJPY","Name":"USD/JPY","Rate":"107.3910","Date":"4/29/2016","Time": "2:55pm","Ask":"107.3940","Bid":"107.3910"},{"id":"USDCNY","Name":"USD/CNY","Rate":"6.4868","Date":"4/29/2016","Time":"12:49pm","Ask":"6.4878","Bid":"6.4868"},{"id":"USDGBP","Name":"USD/GBP","Rate":"0.6843","Date":"4/29/2016","Time":"1:15pm","Ask":"0.6844","Bid":"0.6843"},{"id":"USDBRL","Name":"USD/BRL","Rate":"3.4492","Date":"4/29/2016","Time":"3:33pm","Ask":"3.4496","Bid":"3.4492"},{"id":"EUREUR","Name":"EUR/EUR","Rate":"1.0000","Date":"1/29/2016","Time":"8:26am","Ask":"1.0002","Bid":"0.9998"},{"id":"EURUSD","Name":"EUR/USD","Rate":"1.1443","Date":"4/29/2016","Time":"3:08pm","Ask":"1.1443","Bid":"1.1443"},{"id":"EURJPY","Name":"EUR/JPY","Rate":"122.5650","Date":"4/29/2016","Time":"4:00pm","Ask":"122.6200","Bid":"122.5100"},{"id":"EURCNY","Name":"EUR/CNY","Rate":"7.4054","Date":"4/29/2016","Time":"2:08pm","Ask":"7.4070","Bid":"7.4037"},{"id":"EURGBP","Name":"EUR/GBP","Rate":"0.7836","Date":"4/29/2016","Time":"3:22pm","Ask":"0.7837","Bid":"0.7836"},{"id":"EURBRL","Name":"EUR/BRL","Rate":"3.9637","Date":"4/29/2016","Time":"4:28pm","Ask":"3.9679","Bid":"3.9595"}]}}}; 
 

 
//console.log(response.query.results.rate); 
 

 
var times = response.query.results.rate.map(function(elem){ 
 

 
    if(elem.Time === 'N/A' || elem.Time === 0){ 
 
    elem.fullDateTimeStamp = elem.Time; 
 
    //console.log(elem); 
 
    return elem; 
 
    } 
 

 
    // create full date from the time (using time and date combined) 
 
    // 1) is it AM or PM 
 
    var elemIsPm = (elem.Time.substring(elem.Time.length-2).indexOf("am") == -1); 
 
    
 
    // 2) remove AM/PM and get hour:min into array 
 
    var elemArr = elem.Time.substring(0, elem.Time.length-2).split(":"); 
 
    
 
    // 3) add 12 hours if PM and not noon 
 
    if(elemIsPm && elemArr[0] != 12){ 
 
    elemArr[0] = parseInt(elemArr[0]) + 12; 
 
    } 
 
    //console.log(elemArr[0]); 
 
    
 
    // 4) however, if it is 12, we deduct 12 if it's not PM 
 
    if(elemArr[0] == 12 && !elemIsPm){ 
 
    elemArr[0] = elemArr[0] - 12; 
 
    } 
 
    
 
    // 5) create date object 
 
    var elemDateString = elem.Date; 
 
    var elemDateOnly = new Date(elemDateString); 
 
    //console.log(elemDateOnly); 
 
    
 
    var elemTS = new Date(elemDateOnly.getFullYear(), elemDateOnly.getMonth(), elemDateOnly.getDate(), elemArr[0], elemArr[1], 0, 0); 
 
    elem.fullDateTimeStamp = elemTS; 
 
    
 
// console.log(elem); 
 
    
 
    // 4) return 
 
    return elem; 
 
}); 
 

 
console.log(times); 
 

 

 
var lastOne = times.reduce(function(prevVal, elem) { 
 
// console.log('p'); 
 
// console.log(prevVal); 
 
    
 
// console.log('e'); 
 
// console.log(elem); 
 
    
 
    if(prevVal === 'N/A' || prevVal === 0 || prevVal.Time){ 
 
    return elem; 
 
    } 
 
    
 
    //console.log(prevVal.fullDateTimeStamp); 
 
     
 
    return (prevVal.fullDateTimeStamp < elem.fullDateTimeStamp)? elem : prevVal; 
 
    
 
}, 0); 
 

 
document.getElementById('latest').innerHTML = JSON.stringify(lastOne); 
 

 
console.log('====> '); 
 

 
console.log(JSON.stringify(lastOne.fullDateTimeStamp));
Last date: 
 
<div id='latest'></div>

+0

ty для вашего ответа, это очень поможет мне, но я хочу, чтобы не получить последнее из этих 12 результатов запроса. Я хочу, всегда получаю последние результаты каждого запроса. [link] (http://mib.com.br/testes/cambio/cambio.html) вот мой код, обновите эту страницу и посмотрите результаты, они меняются при обновлении страницы. –

+0

@AldoFernandesJunior ok, позвольте мне посмотреть, что я могу сделать - я буду занят в течение следующих нескольких часов, вернусь позже сегодня днем ​​ – ochi

+0

Хорошо, спасибо многому человеку. Я помогу мне так много, снова. –

 Смежные вопросы

  • Нет связанных вопросов^_^