Arrondi au nombre de jour

Bonjour.
Je cherche à arrondir le résultat d’une commande.
Il s’agit d’un temps avec round cela ne fonctionne pas…

((#timestamp# - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#, U))/ 86400)

Je vais évaluer : ((1574446175 - " 1574199632")/ 86400)
Résultat : 2.8535069444444

si j’ajoute round

round(((#timestamp# - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#, U))/ 86400),1)

Attention : il doit y avoir un souci, car le résultat est le même que l'expression
Je vais évaluer : 1574428149.1
Résultat : 1574428149.1

Ca devrait me sortir 3 …

Je dirais que ça devrait plutôt sortir 2,8 :slight_smile:

Mais en effet, je viens de tester et c’est surprenant.

Que te donne ceil() à la place de round() ?

rien :slight_smile:

ceil(((#timestamp# - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#, U))/ 86400),1)
Attention : il doit y avoir un souci, car le résultat est le même que l'expression
Je vais évaluer :
Résultat : 

du coup moi je cherche le nombre entier.
et même le nombre entier inférieur puisque c’est un nombre de jour…

Pour la valeur inférieure, essaie trunc

rien ne fonctionne
je vais changer mon fusil d’épaule.

y a t"il une fonction qui donne le jour de l’année ?
exemple 326 ème jour de l’année aujourd’hui

date(‹ z ›) retourne 325.

Merci tu l’a trouvé dans la doc ?
Par contre on est jour 326 non ?

z Jour de l’année de 0 à 365
0 le premier jour.
365 pour les années bissextiles.

Tout bon Jeedomien doit connaître ce site.

https://www.php.net/manual/fr/function.date.php

super merci.
Bizzare que ca commence à zero…

Mais bon c’est cohérent avec valuedate

valueDate(#[BUREAU][PRESENCE][presence-bureau]#,z)
**Attention : il doit y avoir un souci, car le résultat est le même que l'expression**
Je vais évaluer : **325**
Résultat : **325**

du coup j’ai simplifié :slight_smile:

(date(z) - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#,z))
Je vais évaluer : (325 - 322)
Résultat : 3

Il doit y avoir mieux à faire pour gérer les cas avec deux dates entre deux années.

C’est vrai mais c’est pas facile…
surtout que c’est pour gérer ma backup et le calcul se trouvera toujours entre 0 et 15 jours

Et sinon avec intdiv(#timestamp# - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#, U), 86400) ?

1 « J'aime »

Ca marche :slight_smile:

intdiv(#timestamp# - valueDate(#[BUREAU][LAST-ARCHIVAGE-BACKUP][LAST-ARCHIVE]#, U), 86400
Attention : il doit y avoir un souci, car le résultat est le même que l'expression
Je vais évaluer : 3
Résultat : 3

je m’en rappelerai jamais de celle la :slight_smile:

tu es le gagnant du post :slight_smile:
Même si je me suis rabattu sur une autre solution
Qui va poser le même soucis au changement d’année…
Mais c’est pas trop grave

Merci :slight_smile:

La solution de @Bison doit, au contraire, pouvoir passer les changements d’années.

Ha oui
C’est surtout car je faisait le calcul sur le temps unix
Ma première idée était la plus fiable mais la plus dure à mettre en oeuvre…
Ce n’est pas documenter donc dur pour un non développeur.

@bartounet juste pour information, cette fonction donne la partie entière de la division.

Donc je sais pas si c’est exactement ce que tu voulais faire mais par exemple si le résultat de la division est 2.83, intdiv donne 2 et non 3 (que donnerait round).

Je comprends, mais ou round ne fonctionnait pas du tout.
Elle fonctionne.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.