Travailler avec les dates et l’heure

circle-info

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

circle-info

Vous pouvez comparer des dates et des heures à l'aide d'opérateurs logiques, tout comme des nombres.

addYear() | addMonth() | addDays() | addMinutes()

chevron-rightDescriptionhashtag

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

chevron-rightExempleshashtag

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 :

chevron-rightExemple de code à copierhashtag

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

chevron-rightDescriptionhashtag

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.

circle-exclamation

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.

chevron-rightExemplehashtag

'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

chevron-rightDescriptionhashtag

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().

circle-info

La fonction permet de vérifier si l'heure actuelle se situe dans l'intervalle spécifié.

chevron-rightExemplehashtag

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}

chevron-rightExemple de code à copierhashtag

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

chevron-rightExemplehashtag

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

chevron-rightDescriptionhashtag

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

chevron-rightDescriptionhashtag

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

chevron-rightDescriptionhashtag

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

chevron-rightDescriptionhashtag

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 :

  1. Vérifiez si l'heure est pendant les heures de travail : current_time >= '9:00' ET current_time <= '18:00'

  2. Vérifiez si l'heure est en dehors des heures de travail : current_time < '9:00' OU current_time > '18:00'

  3. Vérifiez si aujourd'hui est un jour ouvrable (pas samedi ni dimanche) : weekday != 6 AND weekday != 7

  4. 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

  5. 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

chevron-rightExemplehashtag

Comment convertir une date et une heure

chevron-rightExemplehashtag

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é.

circle-info

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.

circle-info

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"

chevron-rightExemplehashtag

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