Dua interval waktu tumpang tindih jika masing-masing dimulai sebelum interval lainnya berakhir. Pengujian ini juga mencakup interval yang sepenuhnya berada di dalam interval lain. Berikut cara menerapkannya di Numbers pada Mac untuk membandingkan rentang publikasi, memvalidasi tanggal, dan menangani titik akhir yang bersinggungan.
Alur kerja ini ditujukan bagi seseorang yang merencanakan rentang publikasi dalam spreadsheet. Semua tanggal dan label di bawah ini bersifat sintetis. Anda akan membandingkan dua rentang per baris dan mendapatkan hasil yang jelas tanpa menulis program.
Apa yang dianggap tumpang tindih?
Pertama, tentukan apakah suatu interval mencakup waktu akhirnya. Artikel ini menggunakan interval yang mencakup waktu mulai tetapi tidak mencakup waktu akhir, ditulis [start, end). Rentang dari 09:00 hingga 12:00 mencakup waktu mulainya dan berakhir tepat pada tengah hari. Karena itu, rentang lain yang dimulai pada 12:00 tidak tumpang tindih dengannya. Ini sesuai dengan konvensi acara di iCalendar: DTSTART bersifat inklusif dan DTEND bersifat noninklusif. RFC 5545, bagian 3.6.1.
Untuk dua interval valid yang panjangnya lebih dari nol, pengujian tumpang tindih lengkapnya adalah:
A.start < B.end AND B.start < A.end
Logikanya sederhana. Dua rentang terpisah jika A berakhir sebelum atau tepat saat B dimulai, atau B berakhir sebelum atau tepat saat A dimulai. Jika tidak satu pun kondisi pemisahan itu terpenuhi, keduanya berbagi waktu. Penurunan ini juga menjelaskan mengapa kondisi tambahan untuk tumpang tindih tidak diperlukan jika satu interval mencakup interval lainnya.
Misalkan A berlangsung dari 09:00 hingga 12:00. Jika B berlangsung dari 08:00 hingga 13:00, tidak ada titik akhir B yang berada di dalam A, tetapi B mencakup seluruh A. Pengujian yang hanya menanyakan apakah B dimulai atau berakhir di dalam A akan melewatkan kasus ini. Aturan dua perbandingan akan mendeteksinya.
Simpan rangkaian pengujian sintetis ini di samping spreadsheet Anda. Semua waktu di bawah ini adalah untuk 10 November 2026 dan menggunakan acuan waktu yang sama.
| Rentang A | Rentang B | Hasil yang diharapkan | Alasan |
|---|---|---|---|
09:00–12:00 |
11:00–13:00 |
Tumpang tindih | Beririsan sebagian |
09:00–12:00 |
10:00–11:00 |
Tumpang tindih | A mencakup B |
09:00–12:00 |
08:00–13:00 |
Tumpang tindih | B mencakup A |
09:00–12:00 |
09:00–12:00 |
Tumpang tindih | Rentang identik |
09:00–12:00 |
12:00–13:00 |
Tidak tumpang tindih | Hanya titik akhirnya yang bersinggungan |
09:00–12:00 |
13:00–14:00 |
Tidak tumpang tindih | Ada jeda di antara rentang |
Siapkan tanggal dan waktu yang dapat dibandingkan di Numbers
Gunakan tanggal dan waktu lengkap untuk rentang publikasi yang memiliki waktu tertentu. Waktu saja tidak dapat membedakan pagi ini dari pagi besok. Numbers juga mengisi komponen yang tidak dicantumkan: jika Anda hanya memasukkan waktu, tanggal hari ini akan ditambahkan. Menyembunyikan tanggal atau waktu hanya mengubah tampilannya, sedangkan komponen yang tersimpan tetap digunakan dalam perhitungan. Memformat tanggal, mata uang, dan lainnya di Numbers pada Mac.
Buat satu tabel dengan kolom berikut, menggunakan baris 1 untuk judul:
| Kolom | Judul | Kegunaan |
|---|---|---|
| A | Pasangan | Label netral untuk perbandingan |
| B | Mulai A | Awal rentang pertama |
| C | Akhir A | Akhir eksklusif rentang pertama |
| D | Mulai B | Awal rentang kedua |
| E | Akhir B | Akhir eksklusif rentang kedua |
| F | Pemeriksaan input | Apakah perbandingan dapat dilakukan |
| G | Hasil tumpang tindih | Jawaban |
Pilih sel input di kolom B hingga E. Di bar samping Format, pilih Cell, lalu atur Data Format ke Date & Time. Pilih tampilan yang menunjukkan tanggal dan waktu. Smart Cell View di bagian bawah jendela memungkinkan Anda memeriksa kedua komponen dari nilai yang dipilih. Petunjuk Apple untuk memformat tanggal dan waktu.
Untuk contoh pertama yang dapat diulang, masukkan Pasangan contoh di A2 dan masukkan rumus berikut di sel yang ditentukan. Rumus ini membuat A sebagai 09:00–12:00 dan B sebagai 10:00–11:00 pada 10 November 2026. Anggap setiap titik akhir dalam contoh ini sebagai UTC; catat konvensi tersebut di samping tabel.
| Sel | Rumus |
|---|---|
| B2 | =DATE(2026,11,10)+DURATION(0,0,9) |
| C2 | =DATE(2026,11,10)+DURATION(0,0,12) |
| D2 | =DATE(2026,11,10)+DURATION(0,0,10) |
| E2 | =DATE(2026,11,10)+DURATION(0,0,11) |
DATE membuat tanggal dari tahun, bulan, dan hari sehingga menghindari string tanggal yang ambigu. DURATION menerima minggu, hari, dan jam sebagai tiga argumen pertamanya, jadi DURATION(0,0,9) memasukkan sembilan jam. Ini adalah rumus spreadsheet, bukan perintah Terminal. DATE, DURATION.
Untuk memasukkan rumus, pilih sel tujuan, ketik =, masukkan ekspresi, lalu tekan Return. Numbers mendukung perbandingan antara nilai sel dan menampilkan hasil Boolean-nya. Jika pengaturan Anda menggunakan koma sebagai pemisah desimal, gunakan titik koma sebagai pemisah argumen fungsi, bukan koma. Menghitung nilai menggunakan data dalam sel tabel di Numbers pada Mac, Ikhtisar fungsi.
Validasi rentang sebelum menguji tumpang tindih
Untuk tugas ini, wajibkan empat nilai tanggal/waktu yang dikenali dan waktu akhir yang benar-benar lebih besar daripada waktu mulai yang bersesuaian. Interval yang terbalik perlu diperbaiki. Rentang publikasi dengan panjang nol juga memerlukan keputusan tersendiri karena, menurut konvensi yang dipilih, rentang itu tidak mewakili waktu yang terisi.
Masukkan rumus ini di F2:
=IF(AND(ISDATE(B2),ISDATE(C2),ISDATE(D2),ISDATE(E2)),IF(AND(B2<C2,D2<E2),\"Ready\",\"Invalid window\"),\"Check dates\")
Pengujian luar memeriksa apakah setiap titik akhir merupakan nilai tanggal. Pengujian dalam memeriksa urutan kedua rentang. ISDATE mengenali nilai tanggal, AND mewajibkan semua kondisinya bernilai benar, dan IF memilih hasil yang sesuai. ISDATE, AND, IF.
Contoh ini seharusnya menghasilkan Ready. Jika hasilnya Check dates, periksa sel input, bukan memperlakukan baris itu sebagai rentang terpisah. Jika hasilnya Invalid window, periksa apakah titik akhirnya sama, entri terbalik, atau tanggal hari berikutnya terlewat. Biarkan kesalahan rumus tetap terlihat sampai penyebabnya diperbaiki.
Deteksi tumpang tindih, termasuk jika satu rentang sepenuhnya mencakup lainnya
Masukkan rumus ini di G2:
=IF(F2=\"Ready\",IF(AND(B2<E2,D2<C2),\"Overlap\",\"No overlap\"),\"Check inputs\")
Untuk baris yang valid, kedua perbandingan ini menerapkan aturan tumpang tindih secara langsung: B2 adalah waktu mulai A, E2 adalah waktu akhir B, D2 adalah waktu mulai B, dan C2 adalah waktu akhir A. AND mengembalikan benar hanya jika kedua perbandingan berhasil. Dokumentasi AND dari Apple.
Contoh ini menghasilkan Overlap karena B sepenuhnya berada di dalam A. Ubah jam D2 menjadi 8 dan jam E2 menjadi 13; hasilnya tetap Overlap, kali ini karena B mencakup A. Ubah menjadi 12 dan 13; hasilnya seharusnya menjadi No overlap.
Gunakan tabel pengujian sebelumnya untuk memeriksa kasus-kasus lainnya. Untuk perbandingan tambahan, masukkan pasangan lain di baris berikutnya dan salin rumus F dan G ke baris tersebut. Periksa rumus yang disalin untuk memastikan referensinya mengarah ke baris baru.
Tata letak ini membandingkan dua rentang yang disediakan pada setiap baris. Tata letak ini tidak otomatis membandingkan setiap rentang dalam daftar acara terpisah dengan semua acara lainnya. Untuk daftar kecil, buat satu baris untuk setiap pasangan berbeda yang perlu diperiksa, dan hindari pasangan terbalik yang duplikat.
Identifikasi rentang mana yang mencakup lainnya
Tumpang tindih dan cakupan menjawab pertanyaan yang berbeda. Jika Anda juga perlu mengetahui apakah A sepenuhnya mencakup B, tambahkan kolom H bernama A mencakup B dan masukkan:
=IF(F2=\"Ready\",AND(B2<=D2,E2<=C2),\"Check inputs\")
Untuk B mencakup A, tambahkan kolom I dan masukkan:
=IF(F2=\"Ready\",AND(D2<=B2,C2<=E2),\"Check inputs\")
Pengujian cakupan ini mengizinkan batas yang sama. Karena itu, rentang identik akan menghasilkan TRUE di kedua kolom. Jika tugas Anda mensyaratkan adanya jeda di kedua sisi, ganti kedua perbandingan nonketat dalam rumus cakupan terkait dengan perbandingan ketat. Itu merupakan kondisi editorial tambahan; hasil tumpang tindih tidak berubah.
Bedakan tanggal sipil, waktu absolut, offset, dan zona
Tentukan makna input Anda sebelum menerapkan rumus. Tanggal sipil seperti 2026-11-10 menunjukkan hari kalender tanpa menentukan zona waktu. Tanggal ini cocok untuk label publikasi sepanjang hari. API Temporal.PlainDate dari TC39 secara khusus memodelkan jenis tanggal ini secara terpisah dari zona. Temporal.PlainDate.
Waktu absolut mengidentifikasi titik pada garis waktu. Offset seperti +01:00 menjelaskan selisih dari UTC pada saat itu. Zona bernama seperti Europe/Paris menyediakan aturan waktu regional. Ini adalah informasi yang berbeda: offset tetap tidak membawa aturan zona bernama yang berubah-ubah. Temporal.ZonedDateTime.
Sebagai contoh, stempel waktu sintetis 2026-11-10T10:00:00+01:00 dan 2026-11-10T09:00:00Z menunjukkan waktu absolut yang sama. Membandingkan hanya jam yang ditampilkan akan menghasilkan urutan yang keliru.
Rumus spreadsheet di atas membandingkan nilai yang Anda masukkan; rumus tersebut tidak memiliki langkah konversi zona bernama. Untuk rentang waktu yang berasal dari zona berbeda, ubah dulu setiap titik akhir menjadi waktu absolut dan nyatakan semua titik akhir dalam UTC. Simpan informasi zona asal secara terpisah jika Anda perlu merekonstruksi jadwal waktu lokal yang dimaksud.
Untuk konversi otomatis, jalur API yang terdokumentasi adalah membuat Temporal.ZonedDateTime dengan zonanya lalu mengonversinya menggunakan toInstant(). Metode compare() mengurutkan waktu yang tepat. Jika suatu waktu lokal tidak ada atau terjadi dua kali selama peralihan offset, API menyediakan opsi disambiguasi yang jelas, termasuk reject. Selesaikan ambiguitas itu sebelum mengimpor nilai yang dapat dibandingkan. Konversi, perbandingan, dan disambiguasi Temporal.ZonedDateTime.
Untuk rentang sepanjang hari, tetap gunakan tanggal sipil. Periode publikasi sintetis yang mencakup 10 November hingga 12 November secara inklusif dapat direpresentasikan sebagai [2026-11-10, 2026-11-13). iCalendar juga menggunakan hari setelah hari terakhir yang disertakan sebagai waktu akhir eksklusif untuk acara sepanjang hari. Di Numbers, masukkan batas-batas ini dengan rumus DATE agar komponen waktunya konsisten. Contoh acara multi-hari RFC 5545.
Tangani kasus batas tanpa mengubah pertanyaan
Interval yang melewati tengah malam memerlukan tanggal berikutnya pada nilai akhirnya. Rentang dari 10 November pukul 23:00 hingga 11 November pukul 01:00 valid. Memasukkan kedua titik akhir dengan tanggal 10 November akan membalik urutannya. Perbaiki tanggalnya alih-alih menukar nilainya secara otomatis karena pertukaran dapat menyembunyikan kesalahan input.
Jika titik akhir yang bersinggungan harus dihitung sebagai tumpang tindih untuk tugas tertentu, gunakan AND(B2<=E2,D2<=C2) di dalam rumus G2. Tetap gunakan pemeriksaan input panjang positif, kecuali Anda telah menentukan secara terpisah cara menangani acara titik. Perubahan ini mengubah kebijakan batas dan harus dicatat di samping tabel.
Kebijakan itu juga penting saat menggunakan API bawaan Mac. Apple mendokumentasikan DateInterval di Foundation sebagai interval tertutup yang mencakup kedua titik akhir dan mengizinkan durasi nol. API ini menyediakan intersects dan intersection(with:), tetapi model interval tertutupnya berbeda dari konvensi iCalendar yang digunakan di sini. Untuk tumpang tindih kalender berdurasi positif, gunakan pengujian titik akhir ketat secara eksplisit alih-alih menganggap kebijakan irisan suatu API sesuai dengan tugas Anda. DateInterval.
Sebelum mengandalkan perbandingan, periksa tiga hal: setiap titik akhir memiliki tanggal dan acuan waktu yang dimaksud, kedua rentang memiliki panjang positif, dan contoh titik akhir yang bersinggungan menghasilkan keputusan yang Anda pilih. Setelah keputusan itu dinyatakan dengan jelas, dua perbandingan yang sama menangani tumpang tindih sebagian, cakupan penuh, dan rentang identik.
Sumber
- Menghitung nilai menggunakan data dalam sel tabel di Numbers pada Mac — Apple.
- Memformat tanggal, mata uang, dan lainnya di Numbers pada Mac — Apple.
- Ikhtisar fungsi — Apple.
- DATE — Apple.
- DURATION — Apple.
- ISDATE — Apple.
- AND — Apple.
- IF — Apple.
- DateInterval — Dokumentasi Developer Apple.
- Temporal.PlainDate — Ecma TC39.
- Temporal.ZonedDateTime — Ecma TC39.
- RFC 5545: Spesifikasi Objek Inti Penjadwalan dan Kalender Internet (iCalendar) — RFC Editor.