MaviBot arbeitet mit den folgenden DATUMS- und ZEITFORMATEN:

für Daten – "dd.mm.yyyy"

für Uhrzeiten – "HH:MM"

Variablen

Um mit Datum und Uhrzeit zu arbeiten, können Sie die folgenden Variablen verwenden:

current_date - aktuelles Datum im Format dd.mm.yyyy, basierend auf der Projektzeitzone
next_day - morgiges Datum im Format dd.mm.yyyy; nützlich für die Planung von Nachrichten
current_time - aktuelle Uhrzeit im Format hh:mm, basierend auf der Projektzeitzone
weekday - Wochentag als Zahl: Montag = 1, Dienstag = 2, usw.

Schnellzugriff auf Funktionsbeschreibungen:

Wie man Zeit zu Zeit hinzufügt

Sie können Daten und Uhrzeiten mit logischen Operatoren wie Zahlen vergleichen.

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

addYear(date, years_to_add) - berechnet ein neues Datum durch Hinzufügen einer bestimmten Anzahl von Jahren zum angegebenen Datum, unter Berücksichtigung von Schaltjahren. Verwenden Sie eine negative Zahl, um Jahre zu subtrahieren.

addMonth(date, months_to_add) - berechnet ein neues Datum durch Hinzufügen einer bestimmten Anzahl von Monaten zum angegebenen Datum, unter Berücksichtigung von Schaltjahren. Verwenden Sie eine negative Zahl, um Monate zu subtrahieren.

addDays(date, days_to_add) - fügt dem Datum eine bestimmte Anzahl von Tagen hinzu. Verwenden Sie eine negative Zahl, um Tage zu subtrahieren. Beispiel: addDays(current_date, 20) oder addDays('20.08.2019', -99)

addMinutes(time, minutes_to_add) - fügt der Uhrzeit eine bestimmte Anzahl von Minuten hinzu. Verwenden Sie eine negative Zahl, um Minuten zu subtrahieren. Beispiel: addMinutes(current_time, 20) oder addMinutes('20:08', -30)

'date' + days - fügt dem Datum eine bestimmte Anzahl von Tagen hinzu

'time' + minutes - fügt der Uhrzeit eine bestimmte Anzahl von Minuten hinzu

Beispiel für das Hinzufügen einer bestimmten Anzahl von Jahren zu einem Datum:

Beispiel für das Hinzufügen einer bestimmten Anzahl von Monaten zu einem Datum:

Beispiel für die Verwendung einer einfachen mathematischen Operation – Hinzufügen von Tagen zu einem Datum und Minuten zu einer Uhrzeit:

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)

Wie man Zeit vergleicht

Sie können Daten und Uhrzeiten mit logischen Operatoren wie Zahlen vergleichen:

größer als > , kleiner als <

gleich == , ungleich !=

größer oder gleich >= , kleiner oder gleich <=

Vergleichsbedingungen können auch mit den logischen Operatoren UND und ODER kombiniert werden.

Vergleichsbedingungen müssen logisch konsistent sein, d.h. Sie können keine Bedingungen wie a == 1 und a != 1 erstellen, da ein Wert nicht gleichzeitig gleich und ungleich 1 sein kann.

Vergleichsbedingungen werden im Feld "Variable" eingegeben.

Achten Sie darauf, Verzögerungen zu verwenden, wenn Sie Vergleichsbedingungen in einem Pfeil angeben.

'01.09.2020'`` < '11.10.2020'

'11.10.2020' >= ``current_date

current_date == date

current_time >= '18:00'

current_time <= '21:00'

Wie man Zeitintervalle festlegt

Eine sehr nützliche Funktion für die Arbeit mit Zeitintervallen ist:

time_interval('start_time', 'end_time')

Die Funktion gibt logisch True oder False zurück.

Verwenden Sie diese Funktion in Blöcken als Bedingung im Feld "Zu vergleichende Variable" oder innerhalb eines Rechners mit IF().

Die Funktion ermöglicht es Ihnen zu prüfen, ob die aktuelle Uhrzeit innerhalb des angegebenen Intervalls liegt.

time_interval('10:00','19:00') - prüft das Zeitintervall von 10:00 bis 19:00 Uhr

time_interval('19:00','07:00') - prüft das Zeitintervall von 19:00 bis 07:00 Uhr

time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - prüft das Zeitintervall zwischen verschiedenen Daten

time_interval('#{current_date} 10:00','#{date} 19:00') - prüft das Zeitintervall, das mit Variablen festgelegt wurde

Schauen wir uns das erste Beispiel genauer an. Die Funktion liest sich wie folgt:

Wenn der Benutzer im Zeitraum von 10:00 bis 19:00 Uhr eine Nachricht mit dem Wort "Zeit" sendet, gibt die Bedingung true zurück; andernfalls gibt sie false zurück.

Dies ermöglicht es Ihnen, je nach Zeitpunkt der Kundenanfrage unterschiedliche Antworten zu erstellen.

Wenn die aktuelle Uhrzeit beispielsweise zwischen 10:00 und 19:00 Uhr liegt, erhält der Kunde:
"Ein Manager wird sich bald bei Ihnen melden."

Zu jeder anderen Zeit erhalten sie:
"Der Manager ist derzeit nicht erreichbar; Sie erhalten während der Geschäftszeiten ab 10:00 Uhr eine Antwort."

Geben Sie im Rechnerfeld ein:

response = if(time_interval('10:00','19:00'), "Ein Manager wird sich bald bei Ihnen melden", "Der Manager ist derzeit nicht erreichbar; Sie erhalten während der Geschäftszeiten ab 10:00 Uhr eine Antwort")

Geben Sie im Feld "Nachricht" ein: #{response}

response = if(time_interval('10:00','19:00'), "Ein Manager wird sich bald bei Ihnen melden", "Der Manager ist derzeit nicht erreichbar; Sie erhalten während der Geschäftszeiten ab 10:00 Uhr eine Antwort")

Wie man herausfindet, wie viel Zeit bis zum Tag X bleibt

Um zu berechnen, wie viel Zeit bis zum Tag X bleibt:

Definieren Sie das Datum und die Uhrzeit des Zielzeitpunkts, den Sie herunterzählen möchten.

date_D = 10.10.2021 time_D = 12:00

Konvertieren Sie es in das Timestamp-Format:

timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")

Erfassen Sie die aktuelle Uhrzeit im Timestamp-Format:

timestamp0 = #{timestamp}

Runden Sie die erhaltenen Werte auf ganze Zahlen:

timeD = int(#{timestampD}) time0 = int(#{timestamp0})

Berechnen Sie die Differenz in Sekunden:

time = timeD - time0

Teilen Sie durch die Anzahl der Sekunden eines Tages und runden Sie das Ergebnis:

full_days = time/86400

days = int(#{full_days})

Berechnen Sie, wie viele Sekunden vom unvollständigen Tag übrig bleiben:

c = days*86400

d = time - c

Berechnen Sie, wie viele Stunden dies entspricht, und runden Sie den Wert:

e = d/3600 hours = int(e)

Berechnen Sie, wie viele Sekunden von den unvollständigen Stunden übrig bleiben:

g = hours*3600

h = d - g

Konvertieren Sie dies in Minuten und runden Sie den Wert:

i = h/60

minutes = int(i)

Berechnen Sie, wie viele Sekunden übrig bleiben:

k = minutes*60

seconds = h - k

Und zeigen Sie die Zeit im Feld "Nachrichtentext" an:

Verbleibende Zeit bis zum Start: #{days} Tage #{hours} Stunden #{minutes} Minuten und #{seconds} Sekunden

Hier ist der Code zum Einfügen in das Feld "Rechner":

timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
timestamp0 = #{timestamp}
timeD = int(#{timestampD})
time0 = int(#{timestamp0})
time = timeD - time0
full_days = time/86400
days = int(#{days})
c = days*86400
d = time - c
e = d/3600
hours = int(e)
g = hours*3600 
h = d - g
i = h/60 
minutes = int(i)
k = minutes*60 
seconds = h - k

Der Rechner unterstützt auch das Subtrahieren von Daten und Uhrzeiten ohne Typkonvertierung. Zum Beispiel:

'11.12.2021' - '8.12.2021' gibt 3 (Tage) zurück

'11:12' - '3:45' gibt 447 (Minuten) zurück

Wie man den nächsten Geburtstag herausfindet

Damit der Bot Geburtstagsgrüße sendet, können Sie die Funktion verwenden:

birthdate(date) - gibt den nächsten bevorstehenden Geburtstag basierend auf dem Geburtsdatum der Person zurück: reminder = birthdate('28.04.1994')

Wie man das Datum eines bestimmten Wochentags erhält

Wenn Sie wiederkehrende Mailings an bestimmten Wochentagen haben, können Sie das Datum eines Wochentags abrufen, um das Mailing zu planen.

weekday_date(weekday, b) - gibt das Datum des nächsten angegebenen Wochentags zurück. Es benötigt zwei Parameter:

Der erste Parameter ist die Wochentagsnummer, die gefunden werden soll (von 1 bis 7, wobei 1 = Montag, 7 = Sonntag).

Der zweite Parameter gibt an, ob das heutige Datum zurückgegeben werden soll, wenn der angegebene Wochentag heute ist. Dieser Parameter ist optional und standardmäßig auf False gesetzt.

Schauen wir uns ein Beispiel an, um zu verstehen, wie der zweite Parameter funktioniert:

Sie möchten planen, dass eine Nachricht am Donnerstag gesendet wird.

Aber was ist, wenn der Kunde gerade am Donnerstag registriert wurde?

Soll die Nachricht diesen Donnerstag oder den nächsten gesendet werden?

Der zweite Parameter auf False gesetzt bedeutet, dass die Nachricht nur am nächsten Donnerstag gesendet wird (heute überspringen).

Der zweite Parameter auf True gesetzt bedeutet, dass die Nachricht diesen Donnerstag gesendet wird, wenn heute Donnerstag ist (einschließlich des Registrierungstags).

In unserem Beispiel registriert sich der Benutzer am Donnerstag, dem 13.02.2025, und wir möchten die Nachricht am nächsten Donnerstag senden.
Der zurückgegebene Wert wird also "20.02.2025" sein.

Zum Beispiel gibt weekday_date(4) '20.02.2025' zurück.

Wenn Sie möchten, dass der aktuelle Tag nur bis zu einer bestimmten Uhrzeit zählt, können Sie diese Konstruktion verwenden:

weekday_date(4, current_time < '13:00'), wobei die Bedingung durch jede beliebige Bedingung ersetzt werden kann.

Hier ist ein Beispiel für die Verwendung der Funktion:

Beispiel für die Verwendung der Funktion im Feld "Sendedatum" einer Verbindung

Wie man das Datum eines bestimmten Monatstags erhält

Wenn Sie wiederkehrende Aktionen an einem bestimmten Tag des Monats haben, können Sie das Datum für das nächste Vorkommen dieses Tages abrufen, um Ihr Mailing zu planen.

month_date(date, b) - gibt das nächste Datum des Monats für die angegebene Tagesnummer zurück. Es benötigt zwei Parameter:

date - Tagesnummer des Monats, die gefunden werden soll (von 1 bis 31)

b - optionaler Parameter; gibt an, ob das heutige Datum zurückgegeben werden soll, wenn es mit dem angegebenen Tag übereinstimmt. Standardmäßig False.

Wenn Sie 31 übergeben, der aktuelle Monat aber nur 30 Tage hat, gibt die Funktion den letzten Tag des Monats zurück (z.B. den 30.).

Zum Beispiel:

Wenn heute der 05.04.2022 ist und Sie t = month_date(1) aufrufen, ist das Ergebnis der 01.05.2022 - der nächste 1. des Monats nach heute.

Wie man prüft, ob die aktuelle Uhrzeit innerhalb der Arbeitszeit liegt

Angenommen, das Unternehmen arbeitet von 9:00 bis 18:00 Uhr und ist samstags und sonntags geschlossen. Lassen Sie uns die Prüfungen Schritt für Schritt aufbauen:

  1. Prüfen, ob die Uhrzeit innerhalb der Arbeitszeit liegt: current_time >= '9:00' UND current_time <= '18:00'
  2. Prüfen, ob die Uhrzeit außerhalb der Arbeitszeit liegt: current_time < '9:00' ODER current_time > '18:00'
  3. Prüfen, ob heute ein Arbeitstag ist (nicht Samstag oder Sonntag): weekday != 6 AND weekday != 7
  4. Bedingungen für das Schreiben während der Arbeitszeit kombinieren: current_time >= '9:00' UND current_time <= '18:00' UND weekday != 6 UND weekday != 7
  5. Bedingungen für das Schreiben außerhalb der Arbeitszeit kombinieren: current_time < '9:00' ODER current_time > '18:00' ODER weekday == 6 ODER weekday == 7

Wie man Datum und Uhrzeit konvertiert

Das verwendete Datums-Zeit-Format variiert zwischen Systemen, und es ist möglich, dass eine der integrierten Ressourcen eine Uhrzeit in einem Format zurückgibt, das MaviBot nicht erkennt. Sie müssen es konvertieren.

convert_datetime(date, fin, f_out) - konvertiert Datum und Uhrzeit

Es gibt drei Parameter:

  • Eingabe-Datumszeichenfolge
  • Eingabeformatzeichenfolge
  • Ausgabeformatzeichenfolge

Beispiel:
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") ergibt 2011/11/03

Diese Funktion konvertiert das eingehende Datum in einen Timestamp.

#{current_date} #{current_time} - konvertiert zu "06.01.2025 11:45" — da keine Informationen zu Sekunden oder Mikrosekunden vorliegen, hat der resultierende Timestamp Nullen nach dem Dezimalpunkt.

Zum Beispiel: 1736144700.000000

Wenn Sie Millisekunden nach dem Dezimalpunkt einfügen,

convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")

lautet das Ergebnis: 1736166395.123456

get_datetime(format) - eine Funktion zum Abrufen der aktuellen Uhrzeit in einem bestimmten Format.

Die Funktion nimmt einen Parameter entgegen – eine Zeichenfolge, die das gewünschte Ausgabeformat angibt.

Wichtig! Die Antwort der Funktion lautet (Montag, Dienstag usw.).

Beispiel: get_datetime("%A") ergibt Mittwoch

Beschreibung der Formatzeichenfolgen-Parameter, die in der Funktion als Zeichenfolgen in Anführungszeichen angegeben werden:

Alle anderen Symbole stellen sich selbst dar.

Sie können den aktuellen Timestamp abrufen mit: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")

Aktuelles Datum im Format "dd Monatsname" anzeigen

Um das Datum im Format "dd Monatsname" anzuzeigen, verwenden Sie die Funktion current_date_eng().

Wenn Sie diesem Datum eine bestimmte Anzahl von Tagen hinzufügen müssen, geben Sie die erforderliche Anzahl von Tagen als Parameter in der Funktion an.

Wenn heute beispielsweise der 3. April ist, gibt die Funktion zurück:

current_date_eng() - 3. April

current_date_eng(2) - 5. April

current_date_eng(-2) - 1. April