0
votes

Comment obtenir une API ouverte API Date / Heure de la ville Être récupéré?

Je crée une application simple réagissant sur la météo à l'aide de l'API Open Weather. J'utilise également une bibliothèque externe pour les icônes météo.

Un utilisateur entrait le nom de la ville et obtient la température actuelle avec une icône spécifique en fonction de la description. P>

Mon problème est qu'il n'ya aucun moyen dire si c'est la nuit ou la journée, ce qui serait spécifique à l'icône qui doit être affichée. P>

Je reçois que le timbre de l'heure unique des données est récupéré pour la ville, mais quand je le convertit , montre l'heure locale. Il y a aussi un décalage de fuseau horaire, mais de ma compréhension ne peut pas être converti en un nom de ville en JavaScript. J'ai vérifié pour les paquets NPM code>, mais incapable d'en trouver un. Je veux pouvoir saisir la date / l'heure de la ville spécifique qui est recherchée, pas mon heure locale. P>

Devrais-je passer à une autre API? Vous trouverez ci-dessous les données tirées de Londres: P>

{coord: {…}, weather: Array(1), base: "stations", main: {…}, visibility: 10000, …}
base: "stations"
clouds: {all: 40}
cod: 200
coord: {lon: -0.13, lat: 51.51}
dt: 1592155233
id: 2643743
main: {temp: 71.8, feels_like: 66.69, temp_min: 71.01, temp_max: 73, pressure: 1014, …}
name: "London"
sys: {type: 1, id: 1414, country: "GB", sunrise: 1592106173, sunset: 1592165939}
timezone: 3600
visibility: 10000
weather: Array(1)
0: {id: 802, main: "Clouds", description: "scattered clouds", icon: "03d"}
length: 1
__proto__: Array(0)
wind: {speed: 9.17, deg: 170}


2 commentaires

Sunrise et Sunset sont des valeurs UTC et donc est date.gettime () de sorte que la comparaison au coucher du soleil / le lever du soleil doit être facile à déterminer jour / nuit


Je pensais certainement cela. C'est la réponse que je cherchais. Pourriez-vous écrire cela dans une réponse afin que je puisse marquer complète?


4 Réponses :


0
votes

Je crois que vous pensez peut-être à cela dans ce mauvais sens.

vous devez interroger la météo pour les cadres de temps que vous voulez, comment signifieriez-vous quel temps demandez-vous? / p>

Donc, dans votre requête Vous devez fournir la période pour laquelle vous voulez la météo et quel emplacement . Maintenant, si vous quittez cela, c'est toujours défaut de la période actuelle météo.

pour par exemple. Votre appel devrait être celui-ci - xxx

Maintenant, lorsque vous obtenez votre réponse, vous pouvez associé it avec Ville et heure de date que vous recherchez!


1 commentaires

Ce serait génial !! Malheureusement, mon abonnement gratuit ne fournit pas cela. Je ne veux pas payer pour créer une application simple. Merci quand même!



1
votes

Ils vous ont donné un fuseau horaire:

p>

const obj = {
  dt: 1592155233,
  id: 2643743,
  main: {
    temp: 71.8,
    feels_like: 66.69,
    temp_min: 71.01,
    temp_max: 73,
    pressure: 1014,
  },
  name: "London",
  sys: {
    type: 1,
    id: 1414,
    country: "GB",
    sunrise: 1592106173,
    sunset: 1592165939
  },
  timezone: 3600
}
console.log(new Date(obj.dt*1000-(obj.timezone*1000))); // minus 
console.log(new Date(obj.dt*1000+(obj.timezone*1000))); // plus


2 commentaires

Je crois que je viens de faire


Vous devez ajouter la valeur du fuseau horaire - pas soustraire.



0
votes

Vous pouvez obtenir l'heure actuelle en utilisant le fuseau horaire dans les données renvoyées par l'API. La documentation Open Weather API le décrit comme suit:

  • TimeZone : Décalage en secondes de UTC

0 commentaires

1
votes

J'ai compris comment obtenir le temps correct, de la ville spécifique que les données sont récupérées. Le temps ouvert affiche le fuseau horaire en secondes. Pour l'exemple, j'utiliserai d'Atlanta, ce qui sera compensé de Georgia de -14400. Voir ci-dessous:

d = new Date()
localTime = d.getTime()
localOffset = d.getTimezoneOffset() * 60000
utc = localTime + localOffset
var atlanta = utc + (1000 * -14400)
nd = new Date(atlanta)

// Mon Jun 15 2020 17:07:59 GMT-0700


0 commentaires