Başlangıç tarihini dahil edip ertesi günün başlangıcını hariç tutarak tam bir günü gösterin. Mac Takvim'de yayın tarihini işaretlemek için tüm gün süren bir etkinlik oluşturun; iCalendar verilerinde açık bir bitiş tarihi, etkinliğin dışında kalan ilk günü belirtir.
Bu kılavuzda örnek olarak 18 Haziran 2027 yayın tarihi kullanılıyor. Amaç, Mac takviminize yayın için tam bir gün eklemek, bunu dışa aktarmak ve sınırlarını kontrol etmektir. Aynı mantık, bir tarih takvim, elektronik tablo ve otomasyon arasında aktarılırken yapılan hataları fark etmenize yardımcı olur.
Ertesi gün başlangıcını hariç tutan sınır ne anlama gelir?
Örnek yayın günü için dahil edilen tarih 18 Haziran'dır. Hariç tutulan ilk tarih 19 Haziran'dır. Yarı açık aralıkla yazıldığında aralık [2027-06-18, 2027-06-19) olur: köşeli parantez başlangıcı dahil eder, normal parantez ise bitişi hariç tutar.
iCalendar standardı, etkinliğin DTSTART değerini dahil, DTEND değerini ise hariç tutulan olarak tanımlar. Tüm gün süren bir etkinlikte her iki değer de tarih türündedir. Dolayısıyla, ertesi günün bitiş tarihi tek bir tam günü ifade eder. Yalnızca tarih içeren değerlerde TZID parametresi bulunmamalıdır. RFC 5545, etkinlik bileşenleri ve saat dilimi tanımlayıcıları.
Bu örnek parça yalnızca iki sınır özelliğini gösterir; içe aktarılabilir eksiksiz bir takvim dosyası değildir:
DTSTART;VALUE=DATE:20270618
DTEND;VALUE=DATE:20270619
Aşağıdaki karar tablosu bu kuralı örnek yayın programlarına uygular. Son sütunu başka bir yayın günü olarak değil, hariç tutulan ilk tarih olarak okuyun.
| Amaçlanan kapsama | Dahil edilen başlangıç tarihi | Hariç tutulan bitiş tarihi |
|---|---|---|
| Yalnızca 18 Haziran | 18 Haziran 2027 | 19 Haziran 2027 |
| 18–20 Haziran dahil | 18 Haziran 2027 | 21 Haziran 2027 |
| Yalnızca 30 Haziran | 30 Haziran 2027 | 1 Temmuz 2027 |
Yayın gününü Mac Takvim'de oluşturun
Etkinlik oluşturabileceğiniz bir takvimle başlayın. Bu görev için Takvim'in tüm gün süren etkinlik denetimlerine ihtiyacınız var; programlama araçları gerekmez.
- Takvim'i açın ve 18 Haziran 2027'ye gidin.
- Pencerenin üst kısmında
GünveyaHaftagörünümünü seçin. - 18 Haziran için saatlik ızgaranın üstündeki
all-dayalanına çift tıklayın. - Etkinliğe tarafsız bir ad verin:
Örnek yayın günü. - İşaretçinin yalnızca 18 Haziran'ı kapsadığını kontrol edin.
Apple, Gün veya Hafta görünümünde tüm gün süren etkinlik oluşturmanın yolu olarak tüm gün alanına çift tıklamayı belgeliyor. Birden çok güne yayılan etkinlik oluşturmak için tarihleri sürüklemeyi de ayrıca belgeliyor. Bu örnekte tek günlük işlemi kullanın. Mac'te Takvim'de tüm gün süren, birden çok güne yayılan veya yinelenen etkinlikler ayarlama.
İlk kontrolünüzü takvimin görünümüne bakarak yapın: işaretçi, 19 Haziran'a taşmadan amaçlanan tarihi kapsamalıdır. Hariç tutulan sınır, aralığın verilerde nasıl gösterildiğini açıklar. Görünür işaretçiyi başka bir güne uzatma talimatı değildir.
Etkinliği dışa aktarın ve tarih sınırlarını inceleyin
Takvim listesinden etkinliğin takvimini seçin, ardından Dosya > Dışa Aktar > Dışa Aktar seçeneğini belirleyin. Ortaya çıkan .ics dosyasını uygun bir yere kaydedin. Bu işlem, seçili takvimin etkinliklerini dışa aktarır; dolayısıyla birden çok etkinlik içeren takvimde birden çok etkinlik kaydı bulunan dosya oluşur. Apple, bu dışa aktarma için .ics biçimini belgeliyor. Mac'te takvimleri içe veya dışa aktarma.
Finder'da dışa aktarılan dosyayı seçin ve TextEdit gibi bir metin düzenleyicide açmak için Dosya > Birlikte Aç seçeneğini kullanın. Apple, tek bir dosyayı açarken uygulama seçmenin bir yolu olarak bunu belgeliyor. Mac'te dosya açmak için uygulama seçme.
Örnek yayın günü ifadesini bulun ve çevresindeki etkinlik kaydını inceleyin. Başlangıç ve bitiş özelliklerini yukarıdaki örnek parçayla karşılaştırın. Ek özelliklerin bulunması beklenir; tarih değerlerine ve türlerine odaklanın.
Tüm gün süren bir etkinlikte ne DTEND ne de DURATION varsa standart, etkinliğe bir günlük süre atar. Dolayısıyla, açık bir bitiş değerinin bulunmaması tek başına sorun olduğu anlamına gelmez. RFC 5545, etkinlik bileşenleri.
Dışa aktarılan dosyayı tanılama kopyası olarak kullanın. Görünür etkinlik yanlış tarihleri kapsıyorsa Takvim'de düzeltip yeniden dışa aktarın. Böylece kontrolünüz, gerçekten oluşturduğunuz etkinliğe bağlı kalır.
Takvim tarihlerini, anları, farkları ve adlandırılmış saat dilimlerini ayırt edin
Yayın gününü başka bir araca taşımadan önce o aracın ne tür bir değer beklediğini belirleyin. Takvim etiketiyle zaman damgası farklı sorulara yanıt verir.
| Kavram | Örnek değer | Belirttiği şey |
|---|---|---|
| Takvim tarihi | 2027-06-18 |
Saat içermeyen bir takvim günü |
| An | 2027-06-18T10:00:00Z |
Zaman çizelgesindeki tek bir nokta |
| Sayısal UTC farkı | +02:00 |
Yerel saat ile UTC arasındaki fark |
| Adlandırılmış saat dilimi | Europe/Paris |
Geçerli farkları belirleyen kurallara sahip bir bölge |
RFC 3339, sayısal farklar ve UTC tanımlayıcısı Z dahil olmak üzere anları ifade eden zaman damgası biçimlerini tanımlar. Aralık tanımlarının kendi kapsamı dışında kaldığını açıkça belirtir. Bu nedenle, iki RFC 3339 zaman damgası kullanıldığında bile bitiş noktasının dahil olup olmadığı ayrıca kararlaştırılmalıdır. RFC 3339, kapsam ve tarih/saat biçimi.
Örneğin, 2027-06-18T12:00:00+02:00 ve 2027-06-18T10:00:00Z örnek zaman damgaları aynı anı belirtir. İkisi de tam bir yayın gününü ifade etmez. Tarihe saat ve fark eklemek, kaydettiğiniz bilgiyi değiştirir. RFC 3339, yerel saat farkları.
Adlandırılmış bir saat dilimi, yerel saati ve geçerli farkı hesaplama kurallarını sağlar. IANA, fark değişiklikleri ve yaz saati uygulaması davranışları dahil bu kuralları tutar; işletim sistemi ve yazılım satıcıları güncellemeleri kullanıcılara dağıtır. Farklı tarihlerde sınırları hesaplarken tek bir sayısal fark, bu kurallar kümesinin yerini tutamaz. IANA Saat Dilimleri.
Takvim işaretçisi için takvim tarihini koruyun. Daha sonraki bir görev, zaman damgalı yayınlardan hangilerinin o güne ait olduğunu sorarsa önce yayın gününü tanımlayan adlandırılmış saat dilimini seçin, ardından o bölgedeki iki sınır anını hesaplayın.
Mac otomasyonu aynı aralığı nasıl hesaplamalı?
Apple'ın Foundation çerçevesindeki Date, bir takvimden veya saat diliminden bağımsız olarak bir anı temsil eder. Adı yanıltıcı olabilir; çünkü girdiniz yalnızca 18 Haziran ise takvim tarihi, bir anı belirleyebilmek için takvim bağlamına ihtiyaç duyar. Apple, takvim aritmetiği için Calendar kullanılmasını öneriyor. Date.
Bir otomasyonda takvim sistemini ve saat dilimini açıkça belirtin. Foundation, takvimin saat dilimini yazılabilir timeZone özelliği üzerinden sunar. Bu seçimi açıkça yapmak, otomasyonu sürdüren kişilerin amaçlanan yayın günü tanımını görmesini sağlar. Calendar.timeZone.
Amaçlanan günün içinde olduğu bilinen bir an verildiğinde, Calendar.dateInterval(of: .day, for:) ilgili takvim bileşeninin başlangıç zamanını ve süresini elde eder. Yöntem isteğe bağlı bir sonuç döndürür; otomasyon, sessizce başka bir tarih kullanmak yerine başarısızlığı ele almalıdır. dateInterval(of:for:).
Bitiş noktasıyla ilgili önemli bir ayrıntı vardır: Apple, DateInterval türünü her iki bitiş noktası da dahil kapalı bir aralık olarak belgeliyor. Hariç tutulan yayın günü sınırını uygulamak için hesaplanan sınırları açık bir karşılaştırmayla kullanın: start <= instant && instant < end. Bu, eksiksiz bir program değil, üyelik kuralıdır. DateInterval.
Yerel günlerin her zaman olağan bir gece yarısında başladığını varsaymayın. Apple'ın startOfDay(for:) yöntemi, günün mevcut olan ilk anını döndürür: İki gece yarısı varsa ilkini, gece yarısı yoksa mevcut olan ilk anı seçer. Takvimden türetilen sınırlar bu ayrımı korur. startOfDay(for:).
Tarihi yeniden kullanmadan önce sınırı kontrol edin
Zaman damgası tabanlı bir iş akışında, hesaplanan aralık için şu üç maddelik kabul kontrolünü uygulayın. Beklenen sonuçlar, bitiş noktasını açıkça hariç tutan karşılaştırma kuralından doğrudan çıkar.
| Test anı | Beklenen üyelik |
|---|---|
| Tam olarak günün başlangıcı | Dahil |
| Sınırlar arasındaki herhangi bir an | Dahil |
| Tam olarak ertesi günün başlangıcı | Hariç |
Bu kontrol, 23:59:59 gibi uydurma bir son saatin neden gereksiz olduğunu da açıklar. Bir girdi kesirli saniyeler içeriyorsa, seçilen bu kesme noktasından sonraki bir değer yine de ertesi günün sınırından önce olabilir. Hariç tutulan sınırla karşılaştırmak, “son an” için bir zaman damgası hassasiyeti seçme ihtiyacını ortadan kaldırır.
Mac masaüstü görevi için son olarak Örnek yayın günü etkinliğinin yalnızca 18 Haziran'ı kapladığını ve dışa aktarılan tarih gösteriminin bu kapsamla uyuştuğunu kontrol edin. Gün daha sonra bir zaman damgası filtresine dönüştürüldüğünde seçilen takvimi ve saat dilimini koruyun, başlangıcı dahil edin ve ertesi günün sınırını hariç tutun.
Kaynaklar
Mac'te Takvim'de tüm gün süren, birden çok güne yayılan veya yinelenen etkinlikler ayarlama — Apple.
RFC 5545: İnternet Takvimleme ve Zamanlama Temel Nesne Belirtimi (iCalendar) — RFC Editor.
RFC 3339: İnternette Tarih ve Saat: Zaman Damgaları — RFC Editor.
Saat Dilimleri — IANA.
Date — Apple Geliştirici Belgeleri.
timeZone — Apple Geliştirici Belgeleri.
dateInterval(of:for:) — Apple Geliştirici Belgeleri.
DateInterval — Apple Geliştirici Belgeleri.
startOfDay(for:) — Apple Geliştirici Belgeleri.