Representasikan satu hari penuh dengan menyertakan awalnya dan mengecualikan awal hari berikutnya. Untuk penanda publikasi di Kalender Mac, buat acara sepanjang hari; dalam data iCalendar, tanggal akhir yang eksplisit menunjukkan hari pertama di luar acara.

Panduan ini menggunakan tanggal publikasi sintetis, 18 Juni 2027. Tujuannya adalah menambahkan satu hari publikasi penuh ke kalender Mac, mengekspornya, lalu memeriksa batas-batasnya. Penalaran yang sama membantu Anda mengenali kesalahan saat tanggal berpindah antara kalender, spreadsheet, dan otomatisasi.

Apa arti batas eksklusif hari berikutnya?

Untuk hari publikasi sintetis ini, tanggal yang disertakan adalah 18 Juni. Tanggal pertama yang dikecualikan adalah 19 Juni. Jika ditulis sebagai interval setengah terbuka, rentangnya adalah [2027-06-18, 2027-06-19): kurung siku menyertakan awal, sedangkan tanda kurung mengecualikan akhir.

Standar iCalendar menetapkan DTSTART suatu acara sebagai inklusif dan DTEND sebagai noninklusif. Acara sepanjang hari menggunakan nilai tanggal untuk keduanya. Jadi, tanggal akhir pada hari berikutnya menunjukkan satu hari penuh. Nilai tanggal saja tidak boleh menyertakan parameter TZID. RFC 5545, komponen acara dan pengenal zona waktu.

Fragmen ilustratif ini hanya menampilkan dua properti batas, bukan berkas kalender lengkap yang dapat diimpor:

DTSTART;VALUE=DATE:20270618
DTEND;VALUE=DATE:20270619

Tabel keputusan berikut menerapkan aturan tersebut pada jadwal publikasi sintetis. Baca kolom terakhir sebagai tanggal pertama yang dikecualikan, bukan sebagai hari publikasi tambahan.

Cakupan yang dimaksud Tanggal awal yang disertakan Tanggal akhir eksklusif
Hanya 18 Juni 18 Juni 2027 19 Juni 2027
18–20 Juni inklusif 18 Juni 2027 21 Juni 2027
Hanya 30 Juni 30 Juni 2027 1 Juli 2027

Buat hari publikasi di Kalender Mac

Mulailah dengan kalender yang memungkinkan Anda membuat acara. Untuk tugas ini, Anda memerlukan kontrol acara sepanjang hari di Kalender; alat pemrograman tidak diperlukan.

  1. Buka Kalender dan buka tanggal 18 Juni 2027.
  2. Pilih Day atau Week di bagian atas jendela.
  3. Klik dua kali area all-day di atas kisi jam untuk 18 Juni.
  4. Beri acara tersebut judul netral Hari publikasi contoh.
  5. Pastikan penanda hanya mencakup 18 Juni.

Apple mendokumentasikan klik dua kali area sepanjang hari dalam tampilan Day atau Week sebagai cara membuat acara sepanjang hari. Apple juga mendokumentasikan menyeret melintasi tanggal untuk membuat acara beberapa hari. Untuk contoh ini, gunakan tindakan satu hari. Menyiapkan acara sepanjang hari, beberapa hari, atau berulang di Kalender pada Mac.

Jadikan kalender yang terlihat sebagai pemeriksaan pertama: penanda seharusnya mencakup tanggal yang dimaksud, tanpa berlanjut ke 19 Juni. Batas eksklusif menjelaskan cara rentang direpresentasikan dalam data. Itu bukan instruksi untuk memperpanjang penanda yang terlihat hingga hari berikutnya.

Ekspor acara dan periksa batas tanggalnya

Pilih kalender acara tersebut di daftar kalender, lalu pilih File > Export > Export. Simpan berkas .ics yang dihasilkan di lokasi yang mudah ditemukan. Operasi ini mengekspor acara dari kalender yang dipilih, jadi kalender yang berisi beberapa acara akan menghasilkan berkas dengan beberapa catatan acara. Apple mendokumentasikan .ics sebagai format ekspor ini. Mengimpor atau mengekspor kalender di Mac.

Di Finder, pilih berkas yang diekspor dan gunakan File > Open With untuk membukanya di editor teks seperti TextEdit. Apple mendokumentasikan cara ini untuk memilih aplikasi yang digunakan saat membuka satu berkas. Memilih app untuk membuka berkas di Mac.

Cari Hari publikasi contoh, lalu periksa catatan acara di sekitarnya. Bandingkan properti awal dan akhirnya dengan fragmen ilustratif di atas. Properti tambahan memang wajar; fokuslah pada nilai dan jenis tanggalnya.

Jika acara sepanjang hari tidak memiliki DTEND maupun DURATION, standar menetapkan durasinya satu hari. Jadi, tidak adanya tanggal akhir eksplisit tidak serta-merta menandakan masalah. RFC 5545, komponen acara.

Gunakan hasil ekspor sebagai salinan diagnostik. Jika acara yang terlihat mencakup tanggal yang salah, perbaiki di Kalender lalu ekspor kembali. Dengan demikian, pemeriksaan tetap terkait dengan acara yang benar-benar Anda buat.

Bedakan tanggal kalender, waktu absolut, offset, dan zona bernama

Sebelum memindahkan hari publikasi ke alat lain, tentukan jenis nilai yang diharapkan alat tersebut. Label kalender dan stempel waktu menjawab pertanyaan yang berbeda.

Konsep Nilai ilustratif Yang ditunjukkan
Tanggal kalender 2027-06-18 Satu hari kalender tanpa waktu jam
Waktu absolut 2027-06-18T10:00:00Z Satu titik pada garis waktu
Offset UTC numerik +02:00 Selisih antara waktu lokal dan UTC
Zona waktu bernama Europe/Paris Zona yang aturannya menentukan offset yang berlaku

RFC 3339 mendefinisikan representasi stempel waktu untuk waktu absolut, termasuk offset numerik dan penanda UTC Z. Cakupannya secara eksplisit tidak mencakup deskripsi interval. Jadi, sepasang stempel waktu RFC 3339 tetap memerlukan kesepakatan terpisah tentang apakah titik akhirnya disertakan. RFC 3339, cakupan dan format tanggal/waktu.

Sebagai contoh, stempel waktu sintetis 2027-06-18T12:00:00+02:00 dan 2027-06-18T10:00:00Z menunjukkan waktu absolut yang sama. Keduanya tidak menyatakan satu hari publikasi penuh. Menambahkan waktu dan offset pada tanggal mengubah informasi yang Anda catat. RFC 3339, offset lokal.

Zona bernama menyediakan aturan untuk menghitung waktu lokal dan offset yang berlaku. IANA memelihara aturan tersebut, termasuk perubahan offset dan perilaku waktu musim panas; vendor sistem operasi dan perangkat lunak mendistribusikan pembaruan kepada pengguna. Satu offset numerik tidak dapat menggantikan rangkaian aturan itu saat menghitung batas pada tanggal yang berbeda. Zona Waktu IANA.

Untuk penanda kalender, pertahankan tanggal kalendernya. Jika tugas berikutnya meminta Anda menentukan publikasi berstempel waktu mana yang termasuk dalam hari itu, pilih terlebih dahulu zona bernama yang menetapkan hari publikasi, lalu hitung kedua waktu absolut batasnya di zona tersebut.

Bagaimana otomatisasi Mac menghitung rentang yang sama?

Date dari Foundation milik Apple merepresentasikan waktu absolut secara terpisah dari kalender atau zona waktu. Namanya bisa menyesatkan ketika masukan Anda hanya 18 Juni: tanggal kalender memerlukan konteks kalender sebelum dapat menunjukkan waktu absolut. Apple menyarankan penggunaan Calendar untuk aritmetika kalender. Date.

Untuk otomatisasi, tetapkan sistem kalender dan zona waktunya secara eksplisit. Foundation menyediakan zona kalender melalui properti timeZone yang dapat ditulis. Menetapkan pilihan ini secara eksplisit memperjelas definisi hari publikasi yang dimaksud bagi siapa pun yang memelihara otomatisasi tersebut. Calendar.timeZone.

Dengan waktu absolut yang diketahui berada dalam hari yang dimaksud, Calendar.dateInterval(of: .day, for:) mendapatkan waktu mulai dan durasi komponen kalender tersebut. Metode ini mengembalikan hasil opsional; otomatisasi harus menangani kegagalan alih-alih diam-diam menggantinya dengan tanggal lain. dateInterval(of:for:).

Ada detail penting mengenai titik akhir: Apple mendokumentasikan DateInterval sebagai interval tertutup yang mencakup kedua titik akhir. Untuk menerapkan batas hari publikasi yang eksklusif, gunakan batas yang dihitung dengan perbandingan eksplisit: start <= instant && instant < end. Inilah aturan keanggotaannya, bukan program lengkap. DateInterval.

Hindari anggapan bahwa setiap hari lokal selalu dimulai pada tengah malam biasa. startOfDay(for:) milik Apple mengembalikan momen pertama yang ada pada hari tersebut: metode ini memilih tengah malam pertama jika ada dua, dan momen pertama yang ada jika tengah malam tidak ada. Batas yang dihitung dari kalender mempertahankan perbedaan itu. startOfDay(for:).

Periksa batas sebelum menggunakan kembali tanggal

Untuk alur kerja berbasis stempel waktu, terapkan pemeriksaan penerimaan tiga titik ini pada rentang yang dihitung. Hasil yang diharapkan berikut mengikuti langsung dari perbandingan akhir eksklusif yang eksplisit.

Waktu uji Keanggotaan yang diharapkan
Tepat pada awal hari Disertakan
Waktu apa pun yang berada di antara kedua batas Disertakan
Tepat pada awal hari berikutnya Dikecualikan

Pemeriksaan ini juga menjelaskan mengapa waktu akhir rekaan seperti 23:59:59 tidak diperlukan. Jika masukan memuat pecahan detik, nilai yang lebih lambat daripada batas pilihan itu masih bisa mendahului batas hari berikutnya. Membandingkan dengan batas eksklusif menghindari keharusan memilih presisi stempel waktu untuk “momen terakhir”.

Untuk tugas desktop Mac, selesaikan dengan memastikan Hari publikasi contoh hanya mencakup 18 Juni dan representasi tanggal yang diekspor sesuai dengan cakupan tersebut. Jika hari itu kemudian menjadi filter stempel waktu, pertahankan kalender dan zona yang dipilih, sertakan awalnya, dan kecualikan batas hari berikutnya.

Sumber