IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonction date_sun_info ()


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club Avatar de Sean_Bx
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2024
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Fonction date_sun_info ()
    Bonjour à tous.

    D'abord merci à Bisûnûrs qui m'a guidé afin que je puisse poster au bon endroit.

    Préambule: Comme je l'ai dit dans ma présentation, j'ai créé un site internet pour l'association dont j'étais membre.
    J'utilise Notepad++ et je code toujours en local avant la mise à jour du site. Pour cela, j'utilise Wampserver - 3-3-2 - 64 bits. (Version PHP 8.3.0 et date.timezone = Europe/Paris).

    A l'origine, le site était codé en HTML+CSS mais, rapidement, cela n'a pas été suffisant, notamment quand il s'agit d'afficher la date, l'heure de manière dynamique (ou presque).
    Puis il m'a été demandé d'afficher les heures de lever et de coucher du soleil. Là, je me suis tourné vers les fonctions "date_sunrise" et date_sunset". Le résultat était le suivant:

    Nom : Affichage Heures_Lever_Coucher.jpg
Affichages : 132
Taille : 20,8 Ko

    Mais, dernièrement, WAMP m'a renvoyé une erreur (voir ci-dessous):

    Nom : date_sunrise-date_sunset-deprecated2.jpg
Affichages : 125
Taille : 48,3 Ko

    En effet, si je configure Wamp avec la version PHP 8.0.30 tout va bien. Mais si je le configure en version PHP 8.3.0 j'ai l'erreur indiquant que ces fonctions sont obsolètes depuis la version PHP 8.1.0. (selon https://www.php.net).

    Afin d'être en phase avec les évolutions des serveurs, j'ai donc entrepris d'apprendre à me servir de la nouvelle fonction date_sun_info () qui revoie un tableau avec de nombreuses valeurs. Sauf erreur de ma part, les deux premières m'intéressent (lever et coucher du soleil).

    J'ai donc écrit le petit essai suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
     
    	date_default_timezone_set('Europe/Paris');//au cas où le serveur ne serait pas configuré pour la zone Europe/Paris.
    	$Cejour = date("Y-m-d");
    	$heure = date("H:i");
    	$sun_info = date_sun_info(strtotime('$Cejour'), 44.7904, -1.1556);
    	$Lever = date("H:i", $sun_info['sunrise']);
    	$Coucher = date("H:i", $sun_info['sunset']);
     
    	echo "Date: ", $Cejour;//pour vérification
    	echo "<br>";
    	echo "heure locale: ",$heure;//pour vérification
    	echo "<br>";
    	echo "Lever du soleil: ", $Lever;//Faux: 07:18.
    	echo "<br>";
    	echo "Coucher du soleil: ", $Coucher;//Faux: 20:55.
    ?>
    Mais ce code me retourne des résultats totalement erronés, sur les heures de lever et coucher de soleil:

    Nom : Affichage Heures_Lever_Coucher2.jpg
Affichages : 125
Taille : 11,4 Ko.

    Il y a quelque chose qui doit m'échapper. Cela va vous paraître absurde mais il y a plusieurs jours que je tourne et retourne le problème dans ma tête sans trouver la solution.
    Si, parmi vous, il y a quelqu'un qui peut m'aider, je lui en serai très reconnaissant.

    D'avance merci,
    Sean_Bx
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 241
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 241
    Points : 8 517
    Points
    8 517
    Billets dans le blog
    17
    Par défaut
    Il y a un problème ici :

    $sun_info = date_sun_info(strtotime('$Cejour'), 44.7904, -1.1556);
    Corrige en :

    $sun_info = date_sun_info(strtotime($Cejour), 44.7904, -1.1556);
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Futur Membre du Club Avatar de Sean_Bx
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2024
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    Bonjour Séb. et merci pour votre réponse.

    Je l'avait dit que c'était absurde. Je me focalisais sur la syntaxe de l'utilisation des variables sans penser que le problème pouvait venir d’ailleurs.
    Avec "date_sun_info" j'ai une différence de 2 minutes (en moins) qu'avec "date_sunrise" et "date_sunset" mais je pense que c'est normal.
    Peut être faut-il appliquer une autre valeur pour obtenir la bonne heure. Je vais essayer de fouiller un peu plus.
    Peut-être cela fera-t-il l'objet d'un nouveau post

    Quoi qu'il en soit, encore merci.
    Cordialement,
    Sean_Bx

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 411
    Points : 15 780
    Points
    15 780
    Par défaut
    pour les 2 minutes d'écart, il s'agit d'une différence d'angles entre les différentes fonctions.
    https://www.php.net/manual/fr/functi...e-sun-info.php
    https://www.php.net/manual/fr/function.date-sunrise.php
    https://www.php.net/manual/fr/dateti...sunrise-zenith

    on peut le voir avec ce code :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    date_default_timezone_set("Europe/Paris");
     
     
    // 90.8333 est l'angle par défaut utilisé par date_sunrise si on n'indique pas de valeur
    $t = date_sunrise(strtotime("2024-08-24"), SUNFUNCS_RET_TIMESTAMP, 44.7904, -1.1556, 90.8333);
    echo date("H:i:s", $t) . "<br/>"; 
    // résultat 07:16:39
     
     
    // 90,5833 est l'angle utilisé par la nouvelle fonction date_sun_info
    $t = date_sunrise(strtotime("2024-08-24"), SUNFUNCS_RET_TIMESTAMP, 44.7904, -1.1556, 90.5833);
    echo date("H:i:s", $t) . "<br/>"; 
    // résultat 07:18:07

  5. #5
    Futur Membre du Club Avatar de Sean_Bx
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2024
    Messages : 6
    Points : 8
    Points
    8
    Par défaut Fonction date_sun_info ()
    Bonjour Mathieu.
    Merci pour cette réponse.
    A mon niveau, il va me falloir un peu de temps pour digérer toutes ces informations .
    A froid, ce que je comprends, c'est qu'il faut que je trouve le moyen de paramétrer l'angle de zénith afin que les heures soient correctes.
    Y a du boulot!
    En effet, comme je l'ai dit dans mon premier post, "date_sunrise" et "date sunset" (que j'utilisais auparavant) sont obsolètes depuis la version PHP 8.1.0. et provoque des signalements d'erreurs.
    Ces deux fonctions ont été remplacées par une seule et même fonction "date_sun_info" qui, pour les paramètres [sunrise] et [sunset], fixe l'angle de zenith = 90°35'.
    Je n'ai pas encore trouvé comment modifier (si cela est possible) la valeur de l'angle de zenith sans passer par "date_sunrise" et "date_sunset".
    Je reviens un peu plus tard (quand j'aurai digéré)

    Cordialement,
    Sean_Bx

  6. #6
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 411
    Points : 15 780
    Points
    15 780
    Par défaut
    Citation Envoyé par Sean_Bx Voir le message
    afin que les heures soient correctes
    ça dépend ce que les responsables de l'association définissent par "correct". quel est la marge de précision ? il ne sont peut-être pas à quelques minutes près ?
    de plus la commune est très allongée donc il peut y avoir une minute de différence entre les points les plus éloignés.

  7. #7
    Futur Membre du Club Avatar de Sean_Bx
    Homme Profil pro
    Retraité
    Inscrit en
    Août 2024
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Août 2024
    Messages : 6
    Points : 8
    Points
    8
    Par défaut
    C'est vrai. Je pinaille.
    Je pense que les responsables de l'association seront moins exigeants que moi.
    Je dois reconnaitre la chose suivante: si je fais une recherche du genre "heure de lever du soleil à Lège Cap Ferret" la plupart des sites me donnent des horaires avec 2 minutes de décalage.
    Mais j'en ai trouvé un https://calendriersolaire.com/fr/lege-cap-ferret qui me donne les bon horaires.
    Devrais-je en déduire que la plupart de ces sites utilisent des fonctions obsolètes!!!

    Pour ma part, je considère que tout va bien. Je vais marquer le sujet comme "RÉSOLU".

    Merci à Seb. et Mathieu pour leur aide.
    J'espère que ce sujet pourra aider quelque personnes.

    Cordialement.
    Sean_Bx

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 12/02/2013, 01h08
  2. Fonction API
    Par margilb dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/07/2002, 11h11
  3. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19
  4. fonction printf
    Par ydeleage dans le forum C
    Réponses: 7
    Dernier message: 30/05/2002, 11h24
  5. FOnction api specifiant la position de la souris
    Par florent dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/05/2002, 20h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo