2016-04-29 6 views
0

Ich mache eine Abfrage auf Yahoo Finance Xchange, aber scheint die Zeit des Updates ist nicht die am meisten aktualisiert. Scheint zufällig, für jede Aktualisierung, diese Wertänderung, manchmal am meisten aktualisiert, und manchmal weniger aktualisiert.Yahoo Finance Xchange - die letzte Aktualisierungszeit

Gibt es eine Möglichkeit, immer die letzte Aktualisierung zu erhalten?

Vielen Dank.

 $.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

was meinst du mit einer Zeit der Aktualisierung? Wo ist die gewünschte Aktualisierungszeit? in der Antwort? – ochi

+0

@ochi Ja, wenn ich meinen Code ausführe, wo ist "data.query.results.rate [xx] .Time" er tauscht für eine Aktualisierungszeit, die zufällig und nicht die letzte scheint. * sorry für mein schlechtes Englisch. –

+0

und Sie möchten nach dieser Zeit sortieren? oder nur die neueste bekommen? - Ihr Englisch ist gut, keine Sorgen. - Weißt du, dass es in Portugues eine Version von SO gibt? (http://pt.stackoverflow.com/) – ochi

Antwort

1

Nun, landete ich im Array (Karte) ein Datum für jedes Element der Konstruktion und Filtern sie dann zum ältesten Datum (reduzieren)

was wollen Sie mit diesem Datum zu tun, ich bin nicht sicher, aber hier ist es ...

aKTUALISIERT

aktualisierte die letzten Datum/Zeitstempel (statt der Rückkehr nur das letzte Datums) vollständig JSON Datensatz zurückzukehren enthält

// 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 für Ihre Antwort, es wird mir sehr helfen, aber was ich will, ist nicht die neuesten von diesen 12 Abfrageergebnisse Was ich will, ist, immer die neuesten Ergebnisse jeder Abfrage zu bekommen. [Link] (http://mib.com.br/testes/cambio/cambio.html) Hier ist mein Code, aktualisieren Sie diese Seite und betrachten Sie die Ergebnisse, sie ändern sich, wenn Sie die Seite aktualisieren. –

+0

@ AldoFernandesJunior ok, lass mich sehen, was ich tun kann - ich werde für die nächsten Stunden beschäftigt sein, check back später nachmittag – ochi

+0

Okay, danke viel Mann. Du hilfst mir so VIEL, ty wieder. –

Verwandte Themen