11 · 2026

ตารางเรียน + ส่งเข้าปฏิทินClass Timetable + Calendar Export

จัดตารางเรียนรายสัปดาห์ เตือนเมื่อเวลาชนกัน บอกคาบถัดไป และส่งออกไฟล์ .ics ให้ทุกคาบขึ้นในปฏิทินมือถือซ้ำทุกสัปดาห์จนปิดเทอมBuild your weekly timetable, catch clashes, see your next class, and export an .ics file so every class repeats in your phone calendar.

tools/timetable.ts
// คาบชน = วันเดียวกัน และช่วงเวลาทับกันif (a.day === b.day  && toMin(a.start) < toMin(b.end)  && toMin(b.start) < toMin(a.end)) out.push([a, b]);// เกิดซ้ำทุกสัปดาห์จนปิดเทอม`RRULE:FREQ=WEEKLY;BYDAY=${day};UNTIL=${end}`
11TESTS7

ใช้ทำอะไร

  • ใส่วิชา วัน เวลา ห้อง → เห็น ตารางรายสัปดาห์ ทันที
  • เวลาชนกัน จะถูกไฮไลต์และแจ้งเตือน (เช่นตอนลงทะเบียนเรียน)
  • การ์ด "คาบถัดไป" บอกว่าคาบต่อไปคืออะไร ห้องไหน อีกกี่นาที
  • ส่งออก .ics → เปิดใน Google Calendar / ปฏิทิน iPhone แล้วทุกคาบขึ้นซ้ำทุกสัปดาห์จนวันปิดเทอม
  • พิมพ์ตารางได้

รายละเอียดทางเทคนิค

  • ไฟล์ .ics สร้างตาม RFC 5545 เอง: VTIMEZONE Asia/Bangkok, RRULE รายสัปดาห์, escape , ; และ ตัดบรรทัดที่ยาวเกิน 75 byte โดยไม่ตัดกลางตัวอักษรไทย (UTF-8 หลาย byte) — มี test ตรวจ
  • หาวันแรกของแต่ละวิชาจากวันเปิดเทอม (เช่น เปิดวันพุธ วิชาวันจันทร์เริ่มสัปดาห์ถัดไป)
  • ตารางแบบกราฟิกซ่อนจาก screen reader แล้วมี รายการแยกตามวัน ที่อ่านได้ครบแทน

What it does

  • Enter course, day, time and room → your weekly grid appears instantly
  • Clashes are highlighted and flagged (handy at registration time)
  • A "next class" card shows what's next, where, and how long until it starts
  • Export .ics → open it in Google Calendar or iPhone Calendar and every class repeats weekly until the semester ends
  • Printable

Technical details

  • The .ics file follows RFC 5545: an Asia/Bangkok VTIMEZONE, weekly RRULE, escaped , ;, and lines folded at 75 bytes without splitting multi-byte Thai characters — tested
  • Each course's first date is computed from the semester start (start on a Wednesday → Monday classes begin the next week)
  • The visual grid is hidden from screen readers; a per-day list carries the same information