Conversion variable heure "hh:mm" en 2 variables numériques heure et minutes, et vice-versa

Bonjour à tous,

Quelqu’un sait-il comment lire une chaine de caractères de type “hh:mm” (par exemple l’heure courante donnée par Homey) pour la convertir en deux nombres correspondant à l’heure et la minute, et inversement, comment obtenir une variable texte de type “hh:mm” à partir de deux nombres correspondant à l’heure et aux minutes ?

Pour info, je cherche cela pour faire des calculs sur l’heure idéale de démarrage de la filtration de ma piscine en fonction d’une part de la température de l’eau, et d’autre part de la période de la journée où mes panneaux solaires produisent le plus d’électricité. Exemple : La production max d’électricité des panneaux est à 11h30 chez moi. Si jamais le temps calculé pour la filtration est de 3h, alors je déclenche la filtration à 11h30 - 3h/2 = 10h, et je l’arrête à 11h30 + 3h/2 = 13h :slight_smile:

J’espère que c’est tout clair ! Merci pour votre aide

Pour ceux que ce sujet intéresse, je viens de poster la même question en anglais ici : Conversion of time variable "hh:mm" into 2 numeric variables hour and minutes, and vice versa car il y a beaucoup plus d’anglophones que de francophones sur ce forum :slight_smile:

C’est possible avec Homeyscript.
Tu peux récupérer l’heure et la séparer en 2 tags.
Idem pour créer une heure.

C’est ce que j’ai cru comprendre en lisant d’autres posts, mais je ne pige pas comment rédiger les traitements avec BBL … :thinking: Si tu peux me donner la syntaxe, je suis preneur :pray:

Sinon pour info, le créateur de l’appli Action Scheduler m’a proposé une autre solution que je suis en train de tester cf Conversion of time variable "hh:mm" into 2 numeric variables hour and minutes, and vice versa

Pour créer un tag numérique heure et un tag numérique minute en fonction de l’heure actuelle:

let hours = new Date().getHours()+1; //+1 heure pour ajuster le fuseau horaire
let minutes = new Date().getMinutes();
await tag('heures', Number(hours)); 
await tag('minutes', Number(minutes));
return true;

Exemple pour déclencher ce script:


Où splitDate est le nom de ton script.

Pour créer un tag string d’heure au format hh:mm avec 2 variables:

let myArgs = JSON.parse(args[0]);
let createdTime = (myArgs.heures + ":" + myArgs.minutes);
await tag('created time', createdTime);
return true;

Exemple de flow pour récupérer ce tag:

Comparer l’heure actuelle avec l’heure créée:

I am sorry, i do not speak or write French, so i’ll do this in English.

If i understand you correct, i think you might like the format card in the Better Logic Library App.

[APP][Pro] Better Logic Library - For Users - Apps - Homey Community Forum

it has a Format card which gives parts of the date exactly how you want it, based on your locale settings and timezone (configurable through the settings):
image
(You can type anything you like it in and select the top one, which is what you typed).
Now, this can be placed into variables directly:

image

*Set [variable] to BLL Expression cards
Press execute to create the variables and tokens.

Now, to get this back to a HH:mm value, u can use this one: Execute Expression as Tag:
image

"[Hour]".padStart(2,'0') + ':' + "[Minutes]".padStart(2,0)

*Watch the double-quotes :wink:

This will result in the time as usual:
image

N.b.
Update to version 2.3.11 of BLL (in test now) to be able to create new variables through the expressionflowcard and resolve a bug where tags are not filled with a value at the first creation.

3 Likes

@sebyldino : Merci, cette solution est très efficace … mais comme je ne suis vraiment pas à l’aise avec l’écriture de code, je préfère m’orienter vers les autres solutions proposées. Ainsi, je pourrai faire d’autres traitements similaires sans me demander à chaque fois comment rédiger le code correspondant ^^

@Arie_J_Godschalk : I guess it would be another solution, thanks. So I’ll try to do the flows and let you know.

Encore merci à tous !

1 Like

Je partage le résultat fait avec l’appli Action Scheduler, que je conserve finalement car cela me semble être la solution la plus simple pour moi :

Encore merci à tous ceux qui m’ont aidé : @sebyldino , @Arie_J_Godschalk & @OH2TH :slight_smile:

  1. I’m using BLL to log the time when I send a notification.

Example: After midnight the formats H:mm:ss and HH:mm:ss result in 24:01:01

I see no option documented to get this to be 00:01:01 instead (which is I think the more regular way to display the time).

Is there a way?

  1. I’m trying to set timezone to mountain time n the USA (salt lake city). It’s hard to search within the card. Where can I find more documentation?

  2. Same for locale. I would like to understand better. Where can I find it?

This has been resolved in the latest BLL.

Working well, thank you.