MaviBot darbojas ar šādiem DATUMA un LAIKA formātiem:

datumiem – "dd.mm.yyyy"
laikam – "HH:MM"

Mainīgie

Lai strādātu ar datumiem un laiku, varat izmantot šādus mainīgos:

current_date - pašreizējais datums formātā dd.mm.yyyy, pamatojoties uz projekta laika joslu
next_day - rītdienas datums formātā dd.mm.yyyy; noderīgs ziņojumu plānošanai
current_time - pašreizējais laiks formātā hh:mm, pamatojoties uz projekta laika joslu
weekday - nedēļas diena kā skaitlis: Pirmdiena = 1, Otrdiena = 2 utt.

Ātra piekļuve funkciju aprakstiem:

Kā pievienot laiku laikam

Jūs varat salīdzināt datumus un laikus, izmantojot loģiskos operatorus, tāpat kā skaitļus.

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

Apraksts

addYear(date, years_to_add) - aprēķina jaunu datumu, pievienojot norādīto gadu skaitu dotajam datumam, ņemot vērā garos gadus. Izmantojiet negatīvu skaitli, lai atņemtu gadus.

addMonth(date, months_to_add) - aprēķina jaunu datumu, pievienojot norādīto mēnešu skaitu dotajam datumam, ņemot vērā garos gadus. Izmantojiet negatīvu skaitli, lai atņemtu mēnešus.

addDays(date, days_to_add) - pievieno norādīto dienu skaitu datumam. Izmantojiet negatīvu skaitli, lai atņemtu dienas. Piemērs: addDays(current_date, 20) vai addDays('20.08.2019', -99)

addMinutes(time, minutes_to_add) - pievieno norādīto minūšu skaitu laikam. Izmantojiet negatīvu skaitli, lai atņemtu minūtes. Piemērs: addMinutes(current_time, 20) vai addMinutes('20:08', -30)

'date' + days - pievieno norādīto dienu skaitu datumam

'time' + minutes - pievieno norādīto minūšu skaitu laikam

Piemēri

Piemērs, kā datumam pievienot noteiktu gadu skaitu:

Piemērs, kā datumam pievienot noteiktu mēnešu skaitu:

Piemērs, kā izmantot vienkāršu matemātisku darbību — dienu pievienošana datumam un minūšu pievienošana laikam:

Koda piemērs kopēšanai

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)

Kā salīdzināt laiku

Apraksts

Jūs varat salīdzināt datumus un laikus, izmantojot loģiskos operatorus, tāpat kā skaitļus:

lielāks par > , mazāks par <
vienāds ar == , nav vienāds ar !=
lielāks vai vienāds ar >= , mazāks vai vienāds ar <=

Salīdzināšanas nosacījumus var arī apvienot, izmantojot loģiskos operatorus UN un VAI.

Salīdzināšanas nosacījumiem jābūt loģiski konsekventiem, proti, jūs nevarat izveidot nosacījumus, piemēram, a == 1 un a != 1, jo vērtība nevar vienlaikus būt gan vienāda, gan nevienāda ar 1.

Salīdzināšanas nosacījumi tiek ievadīti laukā "Mainīgais".

Noteikti izmantojiet aizkaves, norādot salīdzināšanas nosacījumus bultiņā.

Piemērs

'01.09.2020'`` < '11.10.2020'

'11.10.2020' >= ``current_date

current_date == date

current_time >= '18:00'

current_time <= '21:00'

Kā iestatīt laika intervālus

Apraksts

Ļoti noderīga funkcija darbam ar laika intervāliem ir:

time_interval('start_time', 'end_time')

Funkcija atgriež loģisko True vai False.

Izmantojiet šo funkciju blokos kā nosacījumu laukā "Salīdzināmais mainīgais" vai kalkulatorā, izmantojot IF().

Funkcija ļauj pārbaudīt, vai pašreizējais laiks iekrīt norādītajā intervālā.

Piemērs

time_interval('10:00','19:00') - pārbauda laika intervālu no 10:00 līdz 19:00

time_interval('19:00','07:00') - pārbauda laika intervālu no 19:00 līdz 07:00

time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - pārbauda laika intervālu starp dažādiem datumiem

time_interval('#{current_date} 10:00','#{date} 19:00') - pārbauda laika intervālu, kas iestatīts, izmantojot mainīgos

Apskatīsim tuvāk pirmo piemēru. Funkcija darbojas šādi:

Ja lietotājs nosūta ziņojumu, kas satur vārdu "laiks", laika posmā no 10:00 līdz 19:00, nosacījums atgriež patiesu; pretējā gadījumā tas atgriež nepatiesu.

Tas ļauj izveidot dažādas atbildes atkarībā no klienta pieprasījuma laika.

Piemēram, ja pašreizējais laiks ir no 10:00 līdz 19:00, klients saņems:
"Menedžers ar jums sazināsies drīz."

Jebkurā citā laikā viņš saņems:
"Menedžers pašlaik nav pieejams; jūs saņemsiet atbildi darba laikā no 10:00."

Kalkulatora laukā ievadiet:

response = if(time_interval('10:00','19:00'), "Menedžers ar jums sazināsies drīz", "Menedžers pašlaik nav pieejams; jūs saņemsiet atbildi darba laikā no 10:00")

Laukā "Ziņojums" ievadiet: #{response}

Koda piemērs kopēšanai

response = if(time_interval('10:00','19:00'), "Menedžers ar jums sazināsies drīz", "Menedžers pašlaik nav pieejams; jūs saņemsiet atbildi darba laikā no 10:00")

Kā uzzināt, cik daudz laika atlicis līdz dienai D

Piemērs

Lai aprēķinātu, cik daudz laika atlicis līdz dienai D:

Nosakiet mērķa momenta datumu un laiku, līdz kuram vēlaties skaitīt.

date_D = 10.10.2021 time_D = 12:00

Pārvērtiet to timestamp formātā:

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

Iegūstiet pašreizējo laiku timestamp formātā:

timestamp0 = #{timestamp}

Noapaļojiet iegūtās vērtības līdz veseliem skaitļiem:

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

Aprēķiniet starpību sekundēs:

time = timeD - time0

Daliet ar sekunžu skaitu dienā un noapaļojiet rezultātu:

full_days = time/86400

days = int(#{full_days})

Aprēķiniet, cik sekunžu atlicis no nepilnās dienas:

c = days*86400

d = time - c

Aprēķiniet, cik stundām tas atbilst, un noapaļojiet vērtību:

e = d/3600 hours = int(e)

Aprēķiniet, cik sekunžu atlicis no nepilnajām stundām:

g = hours*3600

h = d - g

Pārvērtiet to minūtēs un noapaļojiet vērtību:

i = h/60

minutes = int(i)

Aprēķiniet, cik sekunžu atlicis:

k = minutes*60

seconds = h - k

Un parādiet laiku laukā "Ziņojuma teksts":

Laiks, kas atlicis līdz sākumam: #{days} dienas #{hours} stundas #{minutes} minūtes un #{seconds} sekundes

Lūk, kods, kas jāievieto laukā "Kalkulators":

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

Kalkulators atbalsta arī datumu un laiku atņemšanu bez tipa konvertēšanas. Piemēram:

'11.12.2021' - '8.12.2021' atgriež 3 (dienas)

'11:12' - '3:45' atgriež 447 (minūtes)

Kā uzzināt nākamo dzimšanas dienu

Apraksts

Lai bots sūtītu dzimšanas dienas apsveikumus, varat izmantot funkciju:

birthdate(date) - atgriež nākamo gaidāmo dzimšanas dienu, pamatojoties uz personas dzimšanas datumu: reminder = birthdate('28.04.1994')

Kā iegūt konkrētas nedēļas dienas datumu

Apraksts

Ja jums ir atkārtoti sūtījumi noteiktās nedēļas dienās, varat iegūt nedēļas dienas datumu, lai ieplānotu sūtījumu.

weekday_date(weekday, b) - atgriež tuvākās norādītās nedēļas dienas datumu. Tam ir divi parametri:

Pirmais parametrs ir nedēļas dienas numurs, kuru atrast (no 1 līdz 7, kur 1 = Pirmdiena, 7 = Svētdiena).

Otrais parametrs norāda, vai atgriezt šodienas datumu, ja norādītā nedēļas diena ir šodien. Šis parametrs nav obligāts un pēc noklusējuma ir False.

Apskatīsim piemēru, lai saprastu, kā darbojas otrais parametrs:

Jūs vēlaties ieplānot ziņojuma nosūtīšanu ceturtdien.

Bet ko darīt, ja klients tikko reģistrējās ceturtdien?

Vai ziņojums jānosūta šajā ceturtdienā vai nākamajā?

Otrais parametrs, kas iestatīts uz False, nozīmē, ka ziņojums tiks nosūtīts tikai nākamajā ceturtdienā (izlaižot šodienu).

Otrais parametrs, kas iestatīts uz True, nozīmē, ka ziņojums tiks nosūtīts šajā ceturtdienā, ja šodien ir ceturtdiena (ieskaitot reģistrācijas dienu).

Mūsu piemērā lietotājs reģistrējas ceturtdien, 13.02.2025, un mēs vēlamies nosūtīt ziņojumu nākamajā ceturtdienā.
Tātad atgrieztā vērtība būs "20.02.2025".

Piemēram, weekday_date(4) atgriezīs '20.02.2025'.

Ja vēlaties, lai pašreizējā diena tiktu skaitīta tikai līdz noteiktam laikam, varat izmantot šo konstrukciju:

weekday_date(4, current_time < '13:00'), kur nosacījumu var aizstāt ar jebkuru jums nepieciešamo nosacījumu.

Lūk, piemērs, kā izmantot funkciju:

Piemērs funkcijas izmantošanai savienojuma laukā "Sūtīšanas datums"

Kā iegūt konkrētas mēneša dienas datumu

Apraksts

Ja jums ir atkārtotas darbības noteiktā mēneša dienā, varat iegūt tuvākā šīs dienas datumu, lai ieplānotu sūtījumu.

month_date(date, b) - atgriež tuvāko mēneša datumu norādītajam dienas numuram. Tam ir divi parametri:

date - mēneša dienas numurs, kuru atrast (no 1 līdz 31)

b - neobligāts parametrs; norāda, vai atgriezt šodienas datumu, ja tas sakrīt ar norādīto dienu. Pēc noklusējuma ir False.

Ja ievadāt 31, bet pašreizējā mēnesī ir tikai 30 dienas, funkcija atgriezīs mēneša pēdējo dienu (piemēram, 30.).

Piemēram:

Ja šodien ir 05.04.2022 un jūs izsaucat t = month_date(1), rezultāts būs 01.05.2022 - tuvākais mēneša 1. datums pēc šodienas.

Kā pārbaudīt, vai pašreizējais laiks ir darba laikā

Apraksts

Piemēram, uzņēmums strādā no 9:00 līdz 18:00 un ir slēgts sestdienās un svētdienās. Izveidosim pārbaudes soli pa solim:

  1. Pārbaudiet, vai laiks ir darba laikā: current_time >= '9:00' UN current_time <= '18:00'
  2. Pārbaudiet, vai laiks ir ārpus darba laika: current_time < '9:00' VAI current_time > '18:00'
  3. Pārbaudiet, vai šodien ir darba diena (nav sestdiena vai svētdiena): weekday != 6 UN weekday != 7
  4. Apvienojiet nosacījumus rakstīšanai darba laikā: current_time >= '9:00' UN current_time <= '18:00' UN weekday != 6 UN weekday != 7
  5. Apvienojiet nosacījumus rakstīšanai ārpus darba laika: current_time < '9:00' VAI current_time > '18:00' VAI weekday == 6 VAI weekday == 7
Piemērs

Kā konvertēt datumu un laiku

Piemērs

Dažādās sistēmās izmantotais datuma-laika formāts atšķiras, un ir iespējams, ka kāds no integrētajiem resursiem atgriezīs laiku formātā, kuru MaviBot neatpazīst. Jums tas būs jākonvertē.

convert_datetime(date, fin, f_out) - konvertē datumu un laiku

Ir trīs parametri:

  • Ievades datuma virkne
  • Ievades formāta virkne
  • Izvades formāta virkne

Piemērs:
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") izvadā būs 2011/11/03

Šī funkcija pārvērš ienākošo datumu timestamp.

#{current_date} #{current_time} - konvertē uz "06.01.2025 11:45" — tā kā nav informācijas par sekundēm vai mikrosekundēm, iegūtajā timestamp aiz komata ir nulles.

Piemēram: 1736144700.000000

Ja iekļaujat milisekundes aiz komata,

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

rezultāts būs: 1736166395.123456

get_datetime(format) - funkcija pašreizējā laika iegūšanai noteiktā formātā.
Funkcijai ir viens parametrs — virkne, kas norāda vēlamo izvades formātu.

Svarīgi! Funkcijas atbilde būs (Pirmdiena, Otrdiena utt.).

Piemērs: get_datetime("%A") izvadā būs Wednesday

Formāta virknes parametru apraksts, kas funkcijā norādīti kā virknes pēdiņās:

Direktīva Vērtība Piemērs
%a Nedēļas dienas saīsinātais nosaukums Sun, Mon ...
%A Nedēļas dienas pilnais nosaukums Monday, Tuesday, …, Sunday
%w Nedēļas diena kā decimālskaitlis, kur 0 ir svētdiena un 6 ir sestdiena 0, 1, …, 6
%d Mēneša diena kā decimālskaitlis ar nulli priekšā 01, 02, …, 31
%b Mēneša saīsinātais nosaukums Jan, Feb, …, Dec
%B Mēneša pilnais nosaukums January, February, March, etc.
%m Mēnesis kā decimālskaitlis ar nulli priekšā 01, 02, …, 12
%y Gads kā divciparu skaitlis 00, 01, …, 99
%Y Gads kā četrciparu skaitlis 0001, 0002, …, 2013, 2014, …, 9998, 9999
%H Stunda (24 stundu pulkstenis) kā divciparu skaitlis ar nulli priekšā 00, 01, …, 23
%I Stunda (12 stundu pulkstenis) kā divciparu skaitlis ar nulli priekšā 01, 02, …, 12
%p AM vai PM apzīmējums AM, PM (en_US);am, pm (de_DE)
%M Minūtes kā divciparu skaitlis ar nulli priekšā 00, 01, …, 59
%S Sekundes kā divciparu skaitlis ar nulli priekšā 00, 01, …, 59
%f Mikrosekundes kā sešciparu skaitlis ar nulli priekšā 000000, 000001, …, 999999
%z UTC nobīde formā ±HHMM[SS[.ffffff]] (tukša virkne, ja objekts ir naive). (tukšs), +0000, -0400, +1030, +063415, -030712.345216
%Z Laika joslas nosaukums (tukša virkne, ja objekts ir naive). (tukšs), UTC, GMT
%j Gada diena kā trīsciparu skaitlis ar nulli priekšā 001, 002, …, 366
%U Gada nedēļas numurs (ar svētdienu kā nedēļas pirmo dienu) kā decimālskaitlis ar nulli priekšā. Visas jaunā gada dienas pirms pirmās svētdienas tiek uzskatītas par nulles nedēļu. 00, 01, …, 53
%W Gada nedēļas numurs (ar pirmdienu kā nedēļas pirmo dienu) kā decimālskaitlis. Visas jaunā gada dienas pirms pirmās pirmdienas tiek uzskatītas par nulles nedēļu. 00, 01, …, 53
%% Simbols '%' %
%s timestamp 1607926200

Visi pārējie simboli apzīmē paši sevi.

Pašreizējo timestamp var iegūt, izmantojot: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")

Attēlot pašreizējo datumu formātā "dd mēneša nosaukums"

Piemērs

Lai attēlotu datumu formātā "dd mēneša nosaukums", izmantojiet funkciju current_date_eng().

Ja šim datumam nepieciešams pievienot noteiktu dienu skaitu, funkcijā kā parametrs jānorāda nepieciešamais dienu skaits.

Piemēram, ja šodienas datums ir 3. aprīlis, tad funkcija atgriezīs:

current_date_eng() - April 3rd

current_date_eng(2) - April 5th

current_date_eng(-2) - April 1st