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
- Kā salīdzināt laiku
- Kā iestatīt laika intervālus
- Kā uzzināt, cik daudz laika atlicis līdz dienai D
- Kā uzzināt nākamo dzimšanas dienu
- Kā iegūt konkrētas nedēļas dienas datumu
- Kā iegūt konkrētas mēneša dienas datumu
- Kā pārbaudīt, vai pašreizējais laiks ir darba laikā
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:
- Pārbaudiet, vai laiks ir darba laikā: current_time >= '9:00' UN current_time <= '18:00'
- Pārbaudiet, vai laiks ir ārpus darba laika: current_time < '9:00' VAI current_time > '18:00'
- Pārbaudiet, vai šodien ir darba diena (nav sestdiena vai svētdiena): weekday != 6 UN weekday != 7
- Apvienojiet nosacījumus rakstīšanai darba laikā: current_time >= '9:00' UN current_time <= '18:00' UN weekday != 6 UN weekday != 7
- 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