MaviBot ทำงานกับรูปแบบ DATE และ TIME ต่อไปนี้:
สำหรับวันที่ – "dd.mm.yyyy"
สำหรับเวลา – "HH:MM"
ตัวแปร
ในการทำงานกับวันที่และเวลา คุณสามารถใช้ตัวแปรต่อไปนี้:
current_date - วันที่ปัจจุบันในรูปแบบ dd.mm.yyyy ตามเขตเวลาของโปรเจกต์
next_day - วันที่ของวันพรุ่งนี้ในรูปแบบ dd.mm.yyyy มีประโยชน์สำหรับการกำหนดเวลาส่งข้อความ
current_time - เวลาปัจจุบันในรูปแบบ hh:mm ตามเขตเวลาของโปรเจกต์
weekday - วันของสัปดาห์เป็นตัวเลข: วันจันทร์ = 1, วันอังคาร = 2, ฯลฯ
การเข้าถึงคำอธิบายฟังก์ชันอย่างรวดเร็ว:
- เพิ่มเวลาให้กับเวลา
- เปรียบเทียบเวลา
- ตั้งค่าช่วงเวลา
- คำนวณเวลาที่เหลือจนถึงวัน D
- ค้นหาวันเกิดถัดไป
- รับวันที่ของวันในสัปดาห์ที่ระบุ
- รับวันที่ของวันที่ระบุในเดือน
- ตรวจสอบว่าอยู่ในช่วงเวลาทำงานหรือไม่
วิธีเพิ่มเวลาให้กับเวลา
คุณสามารถเปรียบเทียบวันที่และเวลาโดยใช้ตัวดำเนินการเชิงตรรกะเหมือนกับตัวเลข
addYear() | addMonth() | addDays() | addMinutes()
addYear(date, years_to_add) - คำนวณวันที่ใหม่โดยการเพิ่มจำนวนปีที่ระบุให้กับวันที่ที่กำหนด โดยคำนึงถึงปีอธิกสุรทิน ใช้ตัวเลขติดลบเพื่อลบปี
addMonth(date, months_to_add) - คำนวณวันที่ใหม่โดยการเพิ่มจำนวนเดือนที่ระบุให้กับวันที่ที่กำหนด โดยคำนึงถึงปีอธิกสุรทิน ใช้ตัวเลขติดลบเพื่อลบเดือน
addDays(date, days_to_add) - เพิ่มจำนวนวันที่ระบุให้กับวันที่ ใช้ตัวเลขติดลบเพื่อลบวัน ตัวอย่าง: addDays(current_date, 20) หรือ addDays('20.08.2019', -99)
addMinutes(time, minutes_to_add) - เพิ่มจำนวนนาทีที่ระบุให้กับเวลา ใช้ตัวเลขติดลบเพื่อลบนาที ตัวอย่าง: addMinutes(current_time, 20) หรือ addMinutes('20:08', -30)
'date' + days - เพิ่มจำนวนวันที่ระบุให้กับวันที่
'time' + minutes - เพิ่มจำนวนนาทีที่ระบุให้กับเวลา
ตัวอย่างการเพิ่มจำนวนปีที่กำหนดให้กับวันที่:


ตัวอย่างการเพิ่มจำนวนเดือนที่กำหนดให้กับวันที่:


ตัวอย่างการใช้การดำเนินการทางคณิตศาสตร์อย่างง่าย — การเพิ่มวันให้กับวันที่และนาทีให้กับเวลา:


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)
วิธีเปรียบเทียบเวลา
คุณสามารถเปรียบเทียบวันที่และเวลาโดยใช้ตัวดำเนินการเชิงตรรกะเหมือนกับตัวเลข:
มากกว่า > , น้อยกว่า <
เท่ากับ == , ไม่เท่ากับ !=
มากกว่าหรือเท่ากับ >= , น้อยกว่าหรือเท่ากับ <=
เงื่อนไขการเปรียบเทียบสามารถรวมกันได้โดยใช้ตัวดำเนินการเชิงตรรกะ AND และ OR
เงื่อนไขการเปรียบเทียบต้องสอดคล้องกันในเชิงตรรกะ หมายความว่าคุณไม่สามารถสร้างเงื่อนไขเช่น a == 1 และ a != 1 ได้ เนื่องจากค่าไม่สามารถเท่ากับและไม่เท่ากับ 1 ในเวลาเดียวกันได้
เงื่อนไขการเปรียบเทียบจะถูกป้อนในฟิลด์ "Variable"

อย่าลืมใช้การหน่วงเวลาเมื่อระบุเงื่อนไขการเปรียบเทียบในลูกศร

'01.09.2020'`` < '11.10.2020'
'11.10.2020' >= ``current_date
current_date == date
current_time >= '18:00'
current_time <= '21:00'
วิธีตั้งค่าช่วงเวลา
ฟังก์ชันที่มีประโยชน์มากสำหรับการทำงานกับช่วงเวลาคือ:
time_interval('start_time', 'end_time')
ฟังก์ชันจะคืนค่าเชิงตรรกะ True หรือ False
ใช้ฟังก์ชันนี้ในบล็อกเป็นเงื่อนไขในฟิลด์ "Variable to compare" หรือภายในเครื่องคิดเลขโดยใช้ IF()
ฟังก์ชันนี้ช่วยให้คุณตรวจสอบว่า เวลาปัจจุบัน อยู่ในช่วงที่ระบุหรือไม่
time_interval('10:00','19:00') - ตรวจสอบช่วงเวลาตั้งแต่ 10.00 น. ถึง 19.00 น.
time_interval('19:00','07:00') - ตรวจสอบช่วงเวลาตั้งแต่ 19.00 น. ถึง 07.00 น.
time_interval('18.10.2021 10:00','25.10.2021 23:59:59') - ตรวจสอบช่วงเวลาระหว่างวันที่ต่างกัน
time_interval('#{current_date} 10:00','#{date} 19:00') - ตรวจสอบช่วงเวลาที่กำหนดโดยใช้ตัวแปร
มาดูตัวอย่างแรกกันอย่างละเอียด ฟังก์ชันอ่านได้ดังนี้:
หากผู้ใช้ส่งข้อความที่มีคำว่า "เวลา" ในช่วงเวลาตั้งแต่ 10:00 ถึง 19:00 เงื่อนไขจะคืนค่าเป็นจริง มิฉะนั้นจะคืนค่าเป็นเท็จ
ซึ่งช่วยให้คุณสร้างการตอบกลับที่แตกต่างกันขึ้นอยู่กับเวลาที่ลูกค้าส่งคำขอ
ตัวอย่างเช่น หากเวลาปัจจุบันอยู่ระหว่าง 10:00 ถึง 19:00 ลูกค้าจะได้รับ:
"ผู้จัดการจะตอบกลับคุณเร็วๆ นี้"
ในเวลาอื่นๆ พวกเขาจะได้รับ:
"ขณะนี้ผู้จัดการไม่ว่าง คุณจะได้รับการตอบกลับในช่วงเวลาทำงานตั้งแต่ 10:00 น."
ในฟิลด์เครื่องคิดเลข ให้ป้อน:
response = if(time_interval('10:00','19:00'), "ผู้จัดการจะตอบกลับคุณเร็วๆ นี้", "ขณะนี้ผู้จัดการไม่ว่าง คุณจะได้รับการตอบกลับในช่วงเวลาทำงานตั้งแต่ 10:00 น.")
ในฟิลด์ "ข้อความ" ให้ป้อน: #{response}


response = if(time_interval('10:00','19:00'), "ผู้จัดการจะตอบกลับคุณเร็วๆ นี้", "ขณะนี้ผู้จัดการไม่ว่าง คุณจะได้รับการตอบกลับในช่วงเวลาทำงานตั้งแต่ 10:00 น.")
วิธีค้นหาเวลาที่เหลือจนถึงวัน D

ในการคำนวณเวลาที่เหลือจนถึงวัน D:
กำหนดวันที่และเวลาของเป้าหมายที่คุณต้องการนับถอยหลัง
date_D = 10.10.2021 time_D = 12:00
แปลงเป็นรูปแบบ timestamp:
timestampD = convert_datetime("#{date_D} #{time_D}", "%d.%m.%Y %H:%M", "%s")
บันทึกเวลาปัจจุบันในรูปแบบ timestamp:
timestamp0 = #{timestamp}
ปัดเศษค่าที่ได้ให้เป็นจำนวนเต็ม:
timeD = int(#{timestampD}) time0 = int(#{timestamp0})
คำนวณความแตกต่างเป็นวินาที:
time = timeD - time0
หารด้วยจำนวนวินาทีในหนึ่งวัน และปัดเศษผลลัพธ์:
full_days = time/86400
days = int(#{full_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
และแสดงเวลาในฟิลด์ "ข้อความ":
เวลาที่เหลือจนกว่าเริ่มต้น: #{days} วัน #{hours} ชั่วโมง #{minutes} นาที และ #{seconds} วินาที
นี่คือโค้ดสำหรับแทรกในฟิลด์ "เครื่องคิดเลข":
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

เครื่องคิดเลข ยังรองรับการลบวันที่และเวลาโดยไม่ต้องแปลงประเภท ตัวอย่างเช่น:
'11.12.2021' - '8.12.2021' คืนค่า 3 (วัน)
'11:12' - '3:45' คืนค่า 447 (นาที)
วิธีค้นหาวันเกิดถัดไป
เพื่อให้บอทส่งคำอวยพรวันเกิด คุณสามารถใช้ฟังก์ชัน:
birthdate(date) - คืนค่าวันเกิดถัดไปที่จะมาถึงตามวันเกิดของบุคคล: reminder = birthdate('28.04.1994')
วิธีรับวันที่ของวันในสัปดาห์ที่ระบุ
หากคุณมีการส่งจดหมายซ้ำในวันในสัปดาห์ที่ระบุ คุณสามารถรับวันที่ของวันในสัปดาห์นั้นเพื่อกำหนดเวลาการส่งจดหมาย
weekday_date(weekday, b) - คืนค่าวันที่ของวันในสัปดาห์ที่ใกล้ที่สุดที่ระบุ ใช้ สองพารามิเตอร์:
พารามิเตอร์แรกคือหมายเลขวันในสัปดาห์ ที่จะค้นหา (ตั้งแต่ 1 ถึง 7 โดยที่ 1 = วันจันทร์, 7 = วันอาทิตย์)
พารามิเตอร์ที่สอง ระบุว่า จะคืนค่าวันที่ของวันนี้หรือไม่หากวันในสัปดาห์ที่ระบุคือวันนี้ พารามิเตอร์นี้เป็นตัวเลือกและค่าเริ่มต้นคือ False
มาดูตัวอย่างเพื่อทำความเข้าใจว่าพารามิเตอร์ที่สองทำงานอย่างไร:
คุณต้องการกำหนดเวลาส่งข้อความในวันพฤหัสบดี
แต่ถ้าลูกค้าเพิ่งลงทะเบียนในวันพฤหัสบดีล่ะ?
ควรส่งข้อความในวันพฤหัสบดีนี้หรือวันพฤหัสบดีหน้า?
การตั้งค่าพารามิเตอร์ที่สองเป็น False หมายความว่าข้อความจะถูกส่งในวันพฤหัสบดีถัดไปเท่านั้น (ข้ามวันนี้)
การตั้งค่าพารามิเตอร์ที่สองเป็น True หมายความว่าข้อความจะถูกส่งในวันพฤหัสบดีนี้ หากวันนี้คือวันพฤหัสบดี (รวมถึงวันที่ลงทะเบียน)
ในตัวอย่างของเรา ผู้ใช้ลงทะเบียนในวันพฤหัสบดีที่ 13.02.2025 และเราต้องการส่งข้อความในวันพฤหัสบดีถัดไป
ดังนั้น ค่าที่ส่งคืนจะเป็น "20.02.2025"
ตัวอย่างเช่น weekday_date(4) จะคืนค่า '20.02.2025'
หากคุณต้องการให้นับวันปัจจุบันเฉพาะจนถึงเวลาที่กำหนด คุณสามารถใช้โครงสร้างนี้:
weekday_date(4, current_time < '13:00') โดยที่เงื่อนไขสามารถแทนที่ด้วยเงื่อนไขอื่นที่คุณต้องการ
นี่คือตัวอย่างวิธีใช้ฟังก์ชัน:
ตัวอย่างการใช้ฟังก์ชันในฟิลด์ "วันที่ส่ง" ของการเชื่อมต่อ

วิธีรับวันที่ของวันที่ระบุในเดือน
หากคุณมีการดำเนินการซ้ำในวันที่ระบุของเดือน คุณสามารถรับวันที่ของวันที่นั้นที่ใกล้ที่สุดเพื่อกำหนดเวลาการส่งจดหมาย
month_date(date, b) - คืนค่าวันที่ของเดือนที่ใกล้ที่สุดสำหรับหมายเลขวันที่ที่ระบุ ใช้ สองพารามิเตอร์:
date - หมายเลขวันของเดือนที่จะค้นหา (ตั้งแต่ 1 ถึง 31)
b - พารามิเตอร์เสริม ระบุว่าจะคืนค่าวันที่ของวันนี้หรือไม่หากตรงกับวันที่ที่ระบุ ค่าเริ่มต้นคือ False
หากคุณส่ง 31 แต่เดือนปัจจุบันมีเพียง 30 วัน ฟังก์ชันจะคืนค่าวันสุดท้ายของเดือน (เช่น วันที่ 30)
ตัวอย่างเช่น:
หากวันนี้คือ 05.04.2022 และคุณเรียก t = month_date(1) ผลลัพธ์จะเป็น 01.05.2022 - วันที่ 1 ของเดือนที่ใกล้ที่สุดหลังจากวันนี้
วิธีตรวจสอบว่าเวลาปัจจุบันอยู่ในช่วงเวลาทำงานหรือไม่
ตัวอย่างเช่น บริษัททำงานตั้งแต่ 9:00 น. ถึง 18:00 น. และหยุดในวันเสาร์และอาทิตย์ มาสร้างการตรวจสอบทีละขั้นตอน:
- ตรวจสอบว่าเวลาอยู่ในช่วงเวลาทำงานหรือไม่: current_time >= '9:00' AND current_time <= '18:00'
- ตรวจสอบว่าเวลาอยู่นอกช่วงเวลาทำงานหรือไม่: current_time < '9:00' OR current_time > '18:00'
- ตรวจสอบว่าวันนี้เป็นวันทำงานหรือไม่ (ไม่ใช่วันเสาร์หรือวันอาทิตย์): weekday != 6 AND weekday != 7
- รวมเงื่อนไขสำหรับการเขียนในช่วงเวลาทำงาน: current_time >= '9:00' AND current_time <= '18:00' AND weekday != 6 AND weekday != 7
- รวมเงื่อนไขสำหรับการเขียนนอกเวลาทำงาน: current_time < '9:00' OR current_time > '18:00' OR weekday == 6 OR weekday == 7

วิธีแปลงวันที่และเวลา
รูปแบบวันที่-เวลาที่ใช้แตกต่างกันไปในแต่ละระบบ และเป็นไปได้ที่หนึ่งในทรัพยากรที่รวมเข้าด้วยกันจะส่งคืนเวลาในรูปแบบที่ MaviBot ไม่รู้จัก คุณจะต้องแปลงมัน
convert_datetime(date, fin, f_out) - แปลงวันที่และเวลา
มีสามพารามิเตอร์:
- สตริงวันที่อินพุต
- สตริงรูปแบบอินพุต
- สตริงรูปแบบเอาต์พุต
ตัวอย่าง:
convert_datetime("2011-11-03", "%Y-%m-%d", "%Y/%m/%d") ผลลัพธ์จะเป็น 2011/11/03
ฟังก์ชันนี้แปลงวันที่ที่เข้ามาเป็น timestamp
#{current_date} #{current_time} - แปลงเป็น "06.01.2025 11:45" — เนื่องจากไม่มีข้อมูลเกี่ยวกับวินาทีหรือไมโครวินาที timestamp ที่ได้จะมีศูนย์หลังจุดทศนิยม
ตัวอย่างเช่น: 1736144700.000000
หากคุณรวมมิลลิวินาทีหลังจุดทศนิยม
convert_datetime("06.01.2025 19:26:35.123456", "%d.%m.%Y %H:%M:%S.%f", "%s.%f")
ผลลัพธ์จะเป็น: 1736166395.123456
get_datetime(format) - ฟังก์ชันสำหรับรับเวลาปัจจุบันในรูปแบบเฉพาะ
ฟังก์ชันรับหนึ่งพารามิเตอร์ — สตริงที่ระบุรูปแบบเอาต์พุตที่ต้องการ
สำคัญ! การตอบสนองของฟังก์ชันจะเป็น (วันจันทร์, วันอังคาร, ฯลฯ)
ตัวอย่าง: get_datetime("%A") ผลลัพธ์จะเป็น Wednesday
คำอธิบายของพารามิเตอร์สตริงรูปแบบ ซึ่งระบุในฟังก์ชันเป็นสตริงที่อยู่ในเครื่องหมายคำพูด:
สัญลักษณ์อื่นๆ ทั้งหมดหมายถึงตัวมันเอง
คุณสามารถรับ timestamp ปัจจุบันได้โดยใช้: convert_datetime("#{current_date} #{current_time}", "%d.%m.%Y %H:%M", "%s")
แสดงวันที่ปัจจุบันในรูปแบบ "dd ชื่อเดือน"
ในการแสดงวันที่ในรูปแบบ "dd ชื่อเดือน" ให้ใช้ฟังก์ชัน current_date_eng()
หากคุณต้องการเพิ่มจำนวนวันที่กำหนดให้กับวันที่นี้ คุณควรระบุจำนวนวันที่ต้องการเป็นพารามิเตอร์ในฟังก์ชัน
ตัวอย่างเช่น หากวันนี้คือวันที่ 3 เมษายน ฟังก์ชันจะคืนค่า:
current_date_eng() - April 3rd
current_date_eng(2) - April 5th
current_date_eng(-2) - April 1st


