[RESOLU] API - Curl - Ajouter date

Eléphanteau du PHP | 11 Messages

24 août 2022, 16:39

J'utilise une API fournit par le service hydrologique afin de connaître les données de marée.

Or, dans l'API, je dois constamment ajuster la date "from" et "to" en utilisant le format ISO 8061 UTC.

Comment modifier la requête API afin qu'elle prenne automatiquement la date du jour ?

Voici une partie de l'API en question:

"....stations/5cebf1e33d0f4a073c4bc23e/data?time-series-code=wlp-hilo&from=2022-08-24T00%3A00%3A00Z&to=2022-08-25T00%3A00%3A00Z"

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 août 2022, 17:51

Si l'appel se fait en PHP, en y ajoutant une variable qui contient la date du jour avec date('Y-m-D') pour ne remplacer que la partie en gras.

PHP peut aussi te fournir la date au format ISO 8601 en faisant date('c') et pour ton appel API il faudra l'encoder pour le passer en paramètre d'url avec la fonction urlencode(date('c')), sauf que PHP ne va pas utiliser la notation "Z" pour indiquer que c'est l'heure UTC mais +00:00 donc je sais pas si ton API va l'accepter.

Dans le doute, tu peux juste changer la partie en gras comme ceci, en indiquant même today ou tomorrow si tu veux la date du jour ou de demain
echo date('Y-m-d', strtotime('tomorrow'));
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 11 Messages

24 août 2022, 19:30

Si l'appel se fait en PHP, en y ajoutant une variable qui contient la date du jour avec date('Y-m-D') pour ne remplacer que la partie en gras.

PHP peut aussi te fournir la date au format ISO 8601 en faisant date('c') et pour ton appel API il faudra l'encoder pour le passer en paramètre d'url avec la fonction urlencode(date('c')), sauf que PHP ne va pas utiliser la notation "Z" pour indiquer que c'est l'heure UTC mais +00:00 donc je sais pas si ton API va l'accepter.

Dans le doute, tu peux juste changer la partie en gras comme ceci, en indiquant même today ou tomorrow si tu veux la date du jour ou de demain
echo date('Y-m-d', strtotime('tomorrow'));
Merci de la réponse!

Je ne comprends pas bien l'explication. Oui la fonction strtotime fonctionne bien.

Cependant, est-ce possible de récupérer la date dans une variable et par la suite de faire une concaténation avec ce paramètre de l'API "T00%3A00%3A00Z&" pour par la suite remplacer le tout dans l'appel de l'API?

Par exemple:
$d= date('Y-m-d', strtotime('today'));
$var1 = $d."T00%3A00%3A00Z&";
$url = .... /api/v1/stations/5cebf1e33d0f4a073c4bc23e/data?time-series-code=wlp-hilo&from=[b]2022-08-24T00%3A00%3A00Z&[/b]to=2022-08-25T00%3A00%3A00Z
Donc, je voudrais mettre la variable $var1 dans l'appel de l'API à la place de "2022-08-24T00%3A00%3A00Z&".

Mammouth du PHP | 1967 Messages

24 août 2022, 21:16

si tu arrive à concaténer $d et un string pourquoi n'essaye tu pas de concaténer ton url avec ta variable $var1 ??
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 11 Messages

24 août 2022, 22:00

si tu arrive à concaténer $d et un string pourquoi n'essaye tu pas de concaténer ton url avec ta variable $var1 ??
Merci! Je n'y avais pas pensé.

J'ai essayé la suggestion (concaténer) et ça fonctionne.

En passant, y aurais-t-il un script en php afin de calculer l'heure des marées selon la latitude et longitude ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 août 2022, 10:26

En passant, y aurais-t-il un script en php afin de calculer l'heure des marées selon la latitude et longitude ?
La prédiction des marées est un sujet très compliqué qui ne se calcul pas simplement et la latitude et longitude ne suffisent pas.
Il y a quelques API (payantes à ma connaissance) qui permettent de récupérer les infos de marées :
https://services.data.shom.fr/support/fr/services/spm
https://rapidapi.com/aptitudeapps/api/n ... es/pricing (qui a une version gratuite)
https://api.marea.ooo/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 11 Messages

25 août 2022, 21:05

En passant, y aurais-t-il un script en php afin de calculer l'heure des marées selon la latitude et longitude ?
La prédiction des marées est un sujet très compliqué qui ne se calcul pas simplement et la latitude et longitude ne suffisent pas.
Il y a quelques API (payantes à ma connaissance) qui permettent de récupérer les infos de marées :
D'accord pour les suggestions d'API. Je vais conserver mon API.

Je peux récupérer les données du format JSON. Toutefois les heures indiquées sont au format universel (Z ou GMT).

Le format JSON obtenue est: "2022-08-25T06:26:00Z". Si j'extrais l'heure dans une variable, quelle serait le code php pour convertir à un autre fuseau horaire l'heure ? Par exemple le fuseau horaire GMT -4.
// Exemple de l'extraction de l'heure dans ma variable
// $event = $data[0]->eventDate;
$heure = substr($event,11,8);
//La variable $heure contient: 06:26:00

Mammouth du PHP | 2703 Messages

26 août 2022, 02:38

pour des manipulations compliquées sur les dates, mieux vaut utiliser :
https://www.php.net/manual/fr/datetime.settimezone.php

Eléphanteau du PHP | 11 Messages

28 août 2022, 14:19

pour des manipulations compliquées sur les dates, mieux vaut utiliser :
https://www.php.net/manual/fr/datetime.settimezone.php
Merci! J'ai réglé mon problème.