Travailler avec les dates et l’heure
MaviBot fonctionne avec les formats DATE et HEURE suivants :
pour les dates – "jj.mm.aaaa" pour l'heure – "HH:MM"
Variables
Pour travailler avec les dates et l'heure, vous pouvez utiliser les variables suivantes :
current_date - date actuelle au format jj.mm.aaaa, basée sur le fuseau horaire du projet next_day - date de demain au format jj.mm.aaaa ; utile pour la planification des messages current_time - heure actuelle au format hh:mm, basée sur le fuseau horaire du projet weekday - jour de la semaine sous forme de nombre : lundi = 1, mardi = 2, etc.
Accès rapide aux descriptions des fonctions :
Comment ajouter du temps à du temps
Vous pouvez comparer des dates et des heures à l'aide d'opérateurs logiques, tout comme des nombres.
addYear() | addMonth() | addDays() | addMinutes()
Description
addYear(date, years_to_add) - calcule une nouvelle date en ajoutant le nombre d'années spécifié à la date donnée, en tenant compte des années bissextiles. Utilisez un nombre négatif pour soustraire des années.
addMonth(date, months_to_add) - calcule une nouvelle date en ajoutant le nombre de mois spécifié à la date donnée, en tenant compte des années bissextiles. Utilisez un nombre négatif pour soustraire des mois.
addDays(date, days_to_add) - ajoute le nombre de jours spécifié à la date. Utilisez un nombre négatif pour soustraire des jours. Exemple : addDays(current_date, 20) ou addDays('20.08.2019', -99)
addMinutes(time, minutes_to_add) - ajoute le nombre de minutes spécifié à l'heure. Utilisez un nombre négatif pour soustraire des minutes. Exemple : addMinutes(current_time, 20) ou addMinutes('20:08', -30)
'date' + jours - ajoute le nombre de jours spécifié à la date
'heure' + minutes - ajoute le nombre de minutes spécifié à l'heure
Exemples
Exemple d'ajout d'un certain nombre d'années à une date :


Exemple d'ajout d'un certain nombre de mois à une date :


Exemple d'utilisation d'une simple opération mathématique — ajout de jours à une date et de minutes à une heure :


Exemple de code à copier
count = 2
date = '29.02.2020'
x = addYear(date, count)
y = addYear('31.12.2021', -1*count)
count = 10
date = '30.04.2019'
x = addMonth(date, count)
y = addMonth('31.12.2020', -1*count)
count = 10
date = '30.04.2019'
x = addMonth(date, count)
y = addMonth('31.12.2020', -1*count)
Comment comparer l'heure
Description
Vous pouvez comparer des dates et des heures à l'aide d'opérateurs logiques, tout comme des nombres : supérieur à > , inférieur à < égal à == , différent de != supérieur ou égal à >= , inférieur ou égal à <=
Les conditions de comparaison peuvent également être combinées à l'aide des opérateurs logiques ET et OU.
Les conditions de comparaison doivent être logiquement cohérentes, ce qui signifie que vous ne pouvez pas créer des conditions comme a == 1 et a != 1, car une valeur ne peut pas être à la fois égale et différente de 1 en même temps.
Les conditions de comparaison sont saisies dans le champ « Variable » .

Assurez-vous d'utiliser des délais lorsque vous spécifiez des conditions de comparaison dans une flèche.

Exemple
'01.09.2020' < '11.10.2020'
'11.10.2020' >= current_date
current_date == date
current_time >= '18:00'
current_time <= '21:00'
Comment définir des intervalles de temps
Description
Une fonction très utile pour travailler avec des intervalles de temps est :
time_interval('heure_de_début', 'heure_de_fin')
La fonction renvoie un booléen True ou Faux.
Utilisez cette fonction dans les blocs comme condition dans le champ "Variable à comparer" ou dans une calculatrice à l'aide de IF().
La fonction permet de vérifier si l'heure actuelle se situe dans l'intervalle spécifié.
Exemple
time_interval('10:00','19:00') - vérifie l'intervalle de temps de 10 h à 19 h
time_interval('19:00','07:00') - vérifie l'intervalle de temps de 19 h à 7 h
time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - vérifie l'intervalle de temps entre différentes dates
time_interval('#{current_date} 10:00','#{date} 19:00') - vérifie l'intervalle de temps défini à l'aide de variables
Examinons de plus près le premier exemple. La fonction se lit comme suit :
Si l'utilisateur envoie un message contenant le mot "time" pendant la période de 10:00 à 19:00, la condition renvoie vrai ; sinon, elle renvoie faux.
Cela vous permet de créer différentes réponses en fonction de l'heure de la demande du client. Par exemple, si l'heure actuelle est comprise entre 10:00 et 19:00, le client recevra : "Un gestionnaire vous répondra bientôt."
À tout autre moment, il recevra : "Le gestionnaire est actuellement indisponible ; vous recevrez une réponse pendant les heures de travail à partir de 10:00."
Dans le champ Calculatrice, saisissez :
response = if(time_interval('10:00','19:00'), "Un gestionnaire vous répondra bientôt", "Le gestionnaire est actuellement indisponible ; vous recevrez une réponse pendant les heures de travail à partir de 10:00")
Dans le champ "Message", saisissez : #{response}


Exemple de code à copier
response = if(time_interval('10:00','19:00'), "Un gestionnaire vous répondra bientôt", "Le gestionnaire est actuellement indisponible ; vous recevrez une réponse pendant les heures de travail à partir de 10:00")
Comment savoir combien de temps il reste avant le jour D
Exemple

Pour calculer combien de temps il reste avant le jour D :
Définissez la date et l'heure du moment cible jusqu'auquel vous souhaitez effectuer le compte à rebours.
date_D = 10.10.2021 time_D = 12:00
Convertissez-le au format timestamp :
timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
Capturez l'heure actuelle en timestamp :
timestamp0 = #{timestamp}
Arrondissez les valeurs obtenues à des nombres entiers :
timeD = int(#{timestampD}) time0 = int(#{timestamp0})
Calculez la différence en secondes :
time = timeD - time0
Divisez par le nombre de secondes dans une journée et arrondissez le résultat :
full_days = time/86400
days = int(#{full_days})
Calculez combien de secondes restent dans la journée partielle :
c = days*86400
d = time - c
Calculez à combien d'heures cela correspond et arrondissez la valeur :
e = d/3600 hours = int(e)
Calculez combien de secondes restent dans les heures partielles :
g = hours*3600
h = d - g
Convertissez cela en minutes et arrondissez la valeur :
i = h/60
minutes = int(i)
Calculez combien de secondes restent :
k = minutes*60
seconds = h - k
Et affichez le temps dans le « Texte du message » :
Temps restant avant le début : #{days} jours #{hours} heures #{minutes} minutes et #{seconds} secondes
Voici le code à insérer dans le « Calculatrice » :

Le Calculatrice prend également en charge la soustraction de dates et d'heures sans conversion de type. Par exemple :
'11.12.2021' - '8.12.2021' renvoie 3 (jours)
'11:12' - '3:45' renvoie 447 (minutes)
Comment trouver le prochain anniversaire
Description
Pour que le bot envoie des vœux d'anniversaire, vous pouvez utiliser la fonction :
birthdate(date) - renvoie le prochain anniversaire à venir en fonction de la date de naissance de la personne : reminder = birthdate('28.04.1994')
Comment obtenir la date d'un jour de semaine spécifique
Description
Si vous avez des envois récurrents certains jours de la semaine, vous pouvez obtenir la date d'un jour de semaine afin de planifier l'envoi.
weekday_date(weekday, b) - renvoie la date du jour de semaine spécifié le plus proche. Elle prend deux paramètres:
Le premier paramètre est le numéro du jour de semaine à trouver (de 1 à 7, où 1 = lundi, 7 = dimanche).
Le deuxième paramètre indique s'il faut renvoyer la date d'aujourd'hui si le jour de semaine spécifié est aujourd'hui. Ce paramètre est facultatif et sa valeur par défaut est False.
Voyons un exemple pour comprendre le fonctionnement du deuxième paramètre :
Vous souhaitez programmer l'envoi d'un message pour jeudi.
Mais que se passe-t-il si le client vient tout juste de s'inscrire un jeudi ?
Le message doit-il être envoyé ce jeudi ou le suivant ?
Le deuxième paramètre défini sur False signifie que le message ne sera envoyé que le jeudi suivant (en sautant aujourd'hui).
Le deuxième paramètre défini sur True signifie que le message sera envoyé ce jeudi, si aujourd'hui est jeudi (y compris le jour de l'inscription).
Dans notre exemple, l'utilisateur s'inscrit le jeudi 13.02.2025, et nous voulons envoyer le message le jeudi suivant. Donc, la valeur renvoyée sera "20.02.2025".
Par exemple, weekday_date(4) renverra '20.02.2025'.
Si vous souhaitez que le jour actuel ne compte que jusqu'à une certaine heure, vous pouvez utiliser cette construction :
weekday_date(4, current_time < '13:00'), où la condition peut être remplacée par n'importe quelle condition dont vous avez besoin.
Voici un exemple d'utilisation de la fonction :
Exemple d'utilisation de la fonction dans le champ "Date d'envoi" d'une connexion

Comment obtenir la date d'un jour spécifique du mois
Description
Si vous avez des actions récurrentes à un jour spécifique du mois, vous pouvez obtenir la date de l'occurrence la plus proche de ce jour pour planifier votre envoi.
month_date(date, b) - renvoie la date du mois la plus proche pour le numéro de jour spécifié. Elle prend deux paramètres:
date - numéro du jour du mois à trouver (de 1 à 31)
b - paramètre facultatif ; indique s'il faut renvoyer la date d'aujourd'hui si elle correspond au jour spécifié. La valeur par défaut est False.
Si vous indiquez 31 mais que le mois en cours ne compte que 30 jours, la fonction renverra le dernier jour du mois (par exemple le 30).
Par exemple :
Si nous sommes le 05.04.2022 et que vous appelez t = month_date(1), le résultat sera le 01.05.2022 - le 1er du mois le plus proche après aujourd'hui.
Comment vérifier si l'heure actuelle est pendant les heures de travail
Description
Par exemple, l'entreprise travaille de 9 h à 18 h et est fermée les samedis et dimanches. Construisons les vérifications étape par étape :
Vérifiez si l'heure est pendant les heures de travail : current_time >= '9:00' ET current_time <= '18:00'
Vérifiez si l'heure est en dehors des heures de travail : current_time < '9:00' OU current_time > '18:00'
Vérifiez si aujourd'hui est un jour ouvrable (pas samedi ni dimanche) : weekday != 6 AND weekday != 7
Combinez les conditions pour écrire pendant les heures de travail : current_time >= '9:00' ET current_time <= '18:00' ET weekday != 6 ET weekday != 7
Combinez les conditions pour écrire en dehors des heures de travail : current_time < '9:00' OU current_time > '18:00' OU weekday == 6 OU weekday == 7
Comment convertir une date et une heure
Exemple
Le format date-heure utilisé varie selon les systèmes, et il est possible que l'une des ressources intégrées renvoie une heure dans un format que MaviBot ne reconnaît pas. Vous devrez la convertir.
convert_datetime(date, fin, f_out) - convertit une date et une heure
Il y a trois paramètres :
Chaîne de date d'entrée
Chaîne de format d'entrée
Chaîne de format de sortie
Exemple :
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") en sortie donnera 2011/11/03
Cette fonction convertit la date entrante en un timestamp.
#{current_date} #{current_time} - convertit en "06.01.2025 11:45" — comme il n'y a aucune information sur les secondes ou les microsecondes, l'horodatage résultant comporte des zéros après la virgule.
Par exemple : 1736144700.000000
Si vous incluez des millisecondes après la virgule,
convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")
le résultat sera : 1736166395.123456
get_datetime(format) - une fonction pour obtenir l'heure actuelle dans un format spécifique. La fonction prend un paramètre — une chaîne qui spécifie le format de sortie souhaité.
Important ! La réponse de la fonction sera (lundi, mardi, etc.). Exemple : get_datetime("%A") la sortie sera Wednesday
Description des paramètres de chaîne de format, qui sont spécifiés dans la fonction sous forme de chaînes entre guillemets :
%a
Nom abrégé du jour de semaine
Dim, Lun ...
%A
Nom complet du jour de semaine
Lundi, mardi, …, dimanche
%w
Jour de la semaine sous forme de nombre décimal, où 0 est dimanche et 6 est samedi
0, 1, …, 6
%d
Jour du mois sous forme de nombre décimal avec un zéro initial
01, 02, …, 31
%b
Nom abrégé du mois
Jan, Fév, …, Déc
%B
Nom complet du mois
janvier, février, mars, etc.
%m
Mois sous forme de nombre décimal avec un zéro initial
01, 02, …, 12
%y
Année sous forme de nombre à deux chiffres
00, 01, …, 99
%Y
Année sous forme de nombre à quatre chiffres
0001, 0002, …, 2013, 2014, …, 9998, 9999
%H
Heure (format 24 heures) sous forme de nombre à deux chiffres avec un zéro initial
00, 01, …, 23
%I
Heure (format 12 heures) sous forme de nombre à deux chiffres avec un zéro initial
01, 02, …, 12
%p
Indicateur AM ou PM
AM, PM (en_US) ;am, pm (de_DE)
%M
Minutes sous forme de nombre à deux chiffres avec un zéro initial
00, 01, …, 59
%S
Secondes sous forme de nombre à deux chiffres avec un zéro initial
00, 01, …, 59
%f
Microsecondes sous forme de nombre à six chiffres avec un zéro initial
000000, 000001, …, 999999
%z
Décalage UTC sous la forme ±HHMM[SS[.ffffff]] (chaîne vide si l'objet est naïf).
(vide), +0000, -0400, +1030, +063415, -030712.345216
%Z
Nom du fuseau horaire (chaîne vide si l'objet est naïf).
(vide), UTC, GMT
%j
Jour de l'année sous forme de nombre à trois chiffres avec un zéro initial
001, 002, …, 366
%U
Numéro de semaine de l'année (avec dimanche comme premier jour de la semaine) sous forme de nombre décimal avec un zéro initial. Tous les jours de la nouvelle année précédant le premier dimanche sont considérés comme semaine zéro.
00, 01, …, 53
%W
Numéro de semaine de l'année (avec lundi comme premier jour de la semaine) sous forme de nombre décimal. Tous les jours de la nouvelle année précédant le premier lundi sont considérés comme semaine zéro.
00, 01, …, 53
%%
Symbole '%'
%
%s
timestamp
1607926200
Tous les autres symboles se représentent eux-mêmes.
Vous pouvez obtenir l'horodatage actuel à l'aide de : convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")
Afficher la date actuelle au format "jj nom du mois"
Exemple
Pour afficher la date au format "jj nom du mois", utilisez la fonction current_date_eng().
Si vous devez ajouter un certain nombre de jours à cette date, vous devez spécifier le nombre de jours requis comme paramètre dans la fonction.
Par exemple, si la date d'aujourd'hui est le 3 avril, alors la fonction renverra :
current_date_eng() - 3 avril
current_date_eng(2) - 5 avril
current_date_eng(-2) - 1 avril
Mis à jour
