Tarih ve saat ile çalışma
MaviBot aşağıdaki TARİH ve SAAT formatlarıyla çalışır:
tarihler için – "dd.mm.yyyy" saat için – "HH:MM"
Değişkenler
Tarih ve saatlerle çalışmak için aşağıdaki değişkenleri kullanabilirsiniz:
current_date - proje saat dilimine göre dd.mm.yyyy formatında geçerli tarih next_day - yarının tarihini dd.mm.yyyy formatında verir; mesaj planlamada kullanışlıdır current_time - proje saat dilimine göre hh:mm formatında geçerli saat weekday - haftanın günü sayı olarak: Pazartesi = 1, Salı = 2, vb.
Fonksiyon açıklamalarına hızlı erişim:
Saate nasıl saat eklenir
Tarih ve saatleri sayılar gibi mantıksal operatörler kullanarak karşılaştırabilirsiniz.
addYear() | addMonth() | addDays() | addMinutes()
Açıklama
addYear(date, years_to_add) - verilen tarihe belirtilen sayıda yıl ekleyerek yeni tarihi hesaplar, artık yılları dikkate alır. Yıl çıkarmak için negatif sayı kullanın.
addMonth(date, months_to_add) - verilen tarihe belirtilen sayıda ay ekleyerek yeni tarihi hesaplar, artık yılları dikkate alır. Ay çıkarmak için negatif sayı kullanın.
addDays(date, days_to_add) - tarihe belirtilen sayıda gün ekler. Gün çıkarmak için negatif sayı kullanın. Örnek: addDays(current_date, 20) veya addDays('20.08.2019', -99)
addMinutes(time, minutes_to_add) - saate belirtilen sayıda dakika ekler. Dakika çıkarmak için negatif sayı kullanın. Örnek: addMinutes(current_time, 20) veya addMinutes('20:08', -30)
'date' + days - tarihe belirtilen sayıda gün ekler
'time' + minutes - saate belirtilen sayıda dakika ekler
Örnekler
Bir tarihe belirli sayıda yıl eklemeye örnek:


Bir tarihe belirli sayıda ay eklemeye örnek:


Basit bir matematik işlemi kullanmaya örnek — bir tarihe gün, bir saate dakika ekleme:


Kopyalama için kod örneği
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)
Saati nasıl karşılaştırılır
Açıklama
Tarih ve saatleri sayılar gibi mantıksal operatörler kullanarak karşılaştırabilirsiniz: büyüktür > , küçüktür < eşittir == , eşit değildir != büyük eşit >= , küçük eşit <=
Karşılaştırma koşulları mantıksal operatörler AND ve OR kullanılarak da birleştirilebilir.
Karşılaştırma koşulları mantıksal olarak tutarlı olmalıdır; yani a == 1 ve a != 1 gibi koşullar oluşturamazsınız, çünkü bir değer aynı anda 1'e hem eşit hem de eşit olmayan olamaz.
Karşılaştırma koşulları "Değişken" alanına yapıştırın.

ok içinde karşılaştırma koşulları belirtirken gecikmeleri kullanmayı unutmayın.

Örnek
'01.09.2020' < '11.10.2020'
'11.10.2020' >= current_date
current_date == date
current_time >= '18:00'
current_time <= '21:00'
Zaman aralıkları nasıl ayarlanır
Açıklama
Zaman aralıklarıyla çalışmak için çok kullanışlı bir fonksiyon:
time_interval('start_time', 'end_time')
Fonksiyon mantıksal değer döndürür True veya False.
Bu fonksiyonu bloklarda koşul olarak "Karşılaştırılacak değişken" alanında veya IF() kullanarak bir hesaplayıcı içinde kullanın.
Bu fonksiyon, geçerli saatin belirtilen aralığa girip girmediğini kontrol etmenizi sağlar.
Örnek
time_interval('10:00','19:00') - 10:00 ile 19:00 arasındaki zaman aralığını kontrol eder
time_interval('19:00','07:00') - 19:00 ile 07:00 arasındaki zaman aralığını kontrol eder
time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - farklı tarihler arasındaki zaman aralığını kontrol eder
time_interval('#{current_date} 10:00','#{date} 19:00') - değişkenler kullanılarak ayarlanan zaman aralığını kontrol eder
İlk örneğe daha yakından bakalım. Fonksiyon şu şekilde okunur:
Kullanıcı 10:00 ile 19:00 arasındaki dönemde "time" kelimesini içeren bir mesaj gönderirse, koşul true döndürür; aksi halde false döndürür.
Bu, müşterinin isteğinin saatine göre farklı yanıtlar oluşturmanıza olanak tanır. Örneğin, geçerli saat 10:00 ile 19:00 arasındaysa müşteri şunu alır: "Bir yönetici kısa süre içinde size cevap verecek."
Diğer herhangi bir zamanda ise şunu alır: "Yönetici şu anda müsait değil; 10:00 ile başlayan çalışma saatleri içinde size cevap verilecektir."
Hesaplayıcı alanına şunu girin:
response = if(time_interval('10:00','19:00'), "Bir yönetici kısa süre içinde size cevap verecek", "Yönetici şu anda müsait değil; 10:00 ile başlayan çalışma saatleri içinde size cevap verilecektir")
"Mesaj" alanına şunu girin: #{response}


Kopyalama için kod örneği
response = if(time_interval('10:00','19:00'), "Bir yönetici kısa süre içinde size cevap verecek", "Yönetici şu anda müsait değil; 10:00 ile başlayan çalışma saatleri içinde size cevap verilecektir")
D gününe kadar ne kadar süre kaldığını nasıl öğrenirsiniz
Örnek

D gününe kadar ne kadar süre kaldığını hesaplamak için:
Geri sayım yapılacak hedef anın tarihini ve saatini belirleyin.
date_D = 10.10.2021 time_D = 12:00
Bunu timestamp formatına dönüştürün:
timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
Geçerli zamanı timestamp formatına dönüştürün:
timestamp0 = #{timestamp}
Elde edilen değerleri tam sayılara yuvarlayın:
timeD = int(#{timestampD}) time0 = int(#{timestamp0})
Saniye cinsinden farkı hesaplayın:
time = timeD - time0
Bir gündeki saniye sayısına bölün ve sonucu yuvarlayın:
full_days = time/86400
days = int(#{full_days})
Kısmi günden kalan saniye sayısını hesaplayın:
c = days*86400
d = time - c
Bunun kaç saate karşılık geldiğini hesaplayın ve değeri yuvarlayın:
e = d/3600 hours = int(e)
Kısmi saatlerden kalan saniye sayısını hesaplayın:
g = hours*3600
h = d - g
Bunu dakikaya çevirin ve değeri yuvarlayın:
i = h/60
minutes = int(i)
Kalan saniye sayısını hesaplayın:
k = minutes*60
seconds = h - k
Ve süreyi "Mesaj metni" alanını bulun:
Başlangıca kalan süre: #{days} gün #{hours} saat #{minutes} dakika ve #{seconds} saniye
İçine eklemek için kod burada: "Hesaplayıcı" alanını bulun:

Düğmenin Hesaplayıcıda dönüştürme yapmadan tarih ve saatleri çıkarmayı da destekler. Örneğin:
'11.12.2021' - '8.12.2021' 3 döndürür (gün)
'11:12' - '3:45' 447 döndürür (dakika)
Bir sonraki doğum günü nasıl bulunur
Açıklama
Botun doğum günü tebrikleri göndermesi için şu fonksiyonu kullanabilirsiniz:
birthdate(date) - kişinin doğum tarihine göre yaklaşan bir sonraki doğum gününü döndürür: reminder = birthdate('28.04.1994')
Belirli bir haftanın gününün tarihi nasıl alınır
Açıklama
Belirli haftanın günlerinde yinelenen gönderimleriniz varsa, gönderimi planlamak için bir haftanın gününün tarihini alabilirsiniz.
weekday_date(weekday, b) - belirtilen en yakın haftanın gününün tarihini döndürür. Şunları alır iki parametre:
İlk parametre, bulunacak haftanın günü numarasıdır (1'den 7'ye kadar, burada 1 = Pazartesi, 7 = Pazar).
İkinci parametre şunu belirtir: belirtilen haftanın günü bugünse bugünün tarihini döndürmek. Bu parametre isteğe bağlıdır ve varsayılan olarak False'tur.
İkinci parametrenin nasıl çalıştığını anlamak için bir örneğe bakalım:
Bir mesajın Perşembe günü gönderilmesini planlamak istiyorsunuz.
Peki ya müşteri tam Perşembe günü kaydolursa?
Mesaj bu Perşembe mi yoksa bir sonraki Perşembe mi gönderilmeli?
İkinci parametrenin False olarak ayarlanması, mesajın yalnızca bir sonraki Perşembe günü gönderileceği anlamına gelir (bugün atlanır).
İkinci parametrenin True olarak ayarlanması, bugün Perşembe ise mesajın bu Perşembe gönderileceği anlamına gelir (kayıt günü dahil).
Bizim örneğimizde kullanıcı 13.02.2025 Perşembe günü kaydoluyor ve mesajı bir sonraki Perşembe göndermek istiyoruz. Bu nedenle döndürülen değer "20.02.2025" olacaktır.
Örneğin, weekday_date(4) '20.02.2025' döndürür.
Geçerli günün yalnızca belirli bir saate kadar sayılmasını istiyorsanız, bu yapıyı kullanabilirsiniz:
weekday_date(4, current_time < '13:00'); burada koşul, ihtiyaç duyduğunuz herhangi bir koşulla değiştirilebilir.
Fonksiyonun nasıl kullanılacağına dair bir örnek:
Bir bağlantının "Gönderim tarihi" alanında fonksiyonun kullanımına örnek

Ayın belirli bir gününün tarihi nasıl alınır
Açıklama
Ayın belirli bir gününde yinelenen işlemleriniz varsa, gönderimi planlamak için o güne en yakın tarihi alabilirsiniz.
month_date(date, b) - belirtilen gün numarası için ayın en yakın tarihini döndürür. Şunları alır iki parametre:
date - bulunacak ayın gün numarası (1'den 31'e kadar)
b - isteğe bağlı parametre; belirtilen günle eşleşiyorsa bugünün tarihini döndürüp döndürmeyeceğini belirtir. Varsayılanı False'tur.
31 gönderirseniz ama geçerli ayda yalnızca 30 gün varsa, fonksiyon ayın son gününü (ör. 30.) döndürür.
Örneğin:
Bugün 05.04.2022 ise ve t = month_date(1) çağırırsanız, sonuç 01.05.2022 olur - bugünden sonraki en yakın ayın 1'i.
Geçerli saatin çalışma saatleri içinde olup olmadığı nasıl kontrol edilir
Açıklama
Örneğin, şirket 09:00 ile 18:00 arasında çalışıyor ve cumartesi ile pazar günleri kapalı. Kontrolleri adım adım oluşturalım:
Saatin çalışma saatleri içinde olup olmadığını kontrol edin: current_time >= '9:00' VE current_time <= '18:00'
Saatin çalışma saatleri dışında olup olmadığını kontrol edin: current_time < '9:00' VEYA current_time > '18:00'
Bugünün çalışma günü olup olmadığını kontrol edin (cumartesi veya pazar değil): weekday != 6 AND weekday != 7
Çalışma saatleri içinde yazma için koşulları birleştirin: current_time >= '9:00' VE current_time <= '18:00' VE weekday != 6 VE weekday != 7
Çalışma saatleri dışında yazma için koşulları birleştirin: current_time < '9:00' VEYA current_time > '18:00' VEYA weekday == 6 VEYA weekday == 7
Tarih ve saati nasıl dönüştürürsünüz
Örnek
Kullanılan tarih-saat formatı sistemler arasında değişir ve entegre kaynaklardan biri MaviBot'un tanımadığı bir formatta saat döndürebilir. Bunu dönüştürmeniz gerekir.
convert_datetime(date, fin, f_out) - tarih ve saati dönüştürür
Üç parametre vardır:
Girdi tarih dizgesi
Girdi format dizgesi
Çıktı format dizgesi
Örnek:
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") на выходе будет 2011/11/03
Bu fonksiyon gelen tarihi bir timestamp.
#{current_date} #{current_time} - "06.01.2025 11:45" değerine dönüştürür — saniye veya mikro saniye bilgisi olmadığından, oluşan timestamp'in ondalık kısmı sıfır olur.
Örneğin: 1736144700.000000
Ondalık noktadan sonra milisaniyeleri eklerseniz,
convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")
sonuç şu olur: 1736166395.123456
get_datetime(format) - geçerli saati belirli bir formatta alma fonksiyonu. Fonksiyon bir parametre alır — istenen çıktı formatını belirten bir dize.
Önemli! Fonksiyonun yanıtı (Pazartesi, Salı vb.) olacaktır. Örnek: get_datetime("%A") çıktısı Wednesday olacaktır
Fonksiyon içinde tırnak işaretleriyle çevrili dizeler olarak belirtilen format dizgesi parametrelerinin açıklaması:
%a
Haftanın gününün kısa adı
Paz, Pts ...
%A
Haftanın gününün tam adı
Pazartesi, Salı, …, Pazar
%w
Haftanın günü, 0 Pazar ve 6 Cumartesi olacak şekilde ondalık sayı olarak
0, 1, …, 6
%d
Ayın günü, başında sıfır olan ondalık sayı olarak
01, 02, …, 31
%b
Ayın kısa adı
Oca, Şub, …, Ara
%B
Ayın tam adı
Ocak, Şubat, Mart, vb.
%m
Ay, başında sıfır olan ondalık sayı olarak
01, 02, …, 12
%y
İki basamaklı yıl numarası olarak yıl
00, 01, …, 99
%Y
Dört basamaklı yıl numarası olarak yıl
0001, 0002, …, 2013, 2014, …, 9998, 9999
%H
Saat (24 saatlik saat) iki basamaklı, başında sıfır olacak şekilde
00, 01, …, 23
%I
Saat (12 saatlik saat) iki basamaklı, başında sıfır olacak şekilde
01, 02, …, 12
%p
AM veya PM belirteci
AM, PM (en_US);am, pm (de_DE)
%M
Dakikalar, başında sıfır olan iki basamaklı ondalık sayı olarak
00, 01, …, 59
%S
Saniyeler, başında sıfır olan iki basamaklı ondalık sayı olarak
00, 01, …, 59
%f
Mikrosaniyeler, başında sıfır olan altı basamaklı sayı olarak
000000, 000001, …, 999999
%z
UTC farkı şu biçimde ±SSDD[SS[.ffffff]] (nesne naive ise boş dize).
(boş), +0000, -0400, +1030, +063415, -030712.345216
%Z
Saat dilimi adı (nesne naive ise boş dize).
(boş), UTC, GMT
%j
Yılın günü, başında sıfır olan üç basamaklı sayı olarak
001, 002, …, 366
%U
Yılın hafta numarası (haftanın ilk günü olarak Pazar ile) başında sıfır olan ondalık sayı olarak. Yeni yılın ilk Pazarı'ndan önceki tüm günler hafta sıfır olarak kabul edilir.
00, 01, …, 53
%W
Yılın hafta numarası (haftanın ilk günü olarak Pazartesi ile) ondalık sayı olarak. Yeni yılın ilk Pazartesi'sinden önceki tüm günler hafta sıfır olarak kabul edilir.
00, 01, …, 53
%%
Sembol '%'
%
%s
timestamp
1607926200
Diğer tüm semboller kendilerini temsil eder.
Geçerli zaman damgasını şu şekilde alabilirsiniz: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")
Geçerli tarihi "gg ay adı" formatında göster
Örnek
Tarihi "gg ay adı" formatında göstermek için şu fonksiyonu kullanın current_date_eng().
Bu tarihe belirli sayıda gün eklemeniz gerekiyorsa, fonksiyonda gerekli gün sayısını parametre olarak belirtmelisiniz.
Örneğin, bugün tarih 3 Nisan ise, fonksiyon şunu döndürür:
current_date_eng() - 3 Nisan
current_date_eng(2) - 5 Nisan
current_date_eng(-2) - 1 Nisan
Son güncelleme
