Bir tarihe yıllar, aylar, haftalar ve günler gibi farklı birimlerle zaman ekleyin veya çıkarın. Proje planlaması, programlama ve çeşitli zaman tabanlı hesaplamalar için faydalıdır.
Takvim Hesaplayıcı, tarih aritmetiği işlemleri gerçekleştirmek için tasarlanmış çok yönlü bir araçtır. Kullanıcıların belirli bir tarihten yıllar, aylar, haftalar ve günler ekleyip çıkarmasına olanak tanır. Bu hesap makinesi, proje planlaması, programlama ve çeşitli zaman tabanlı hesaplamalar için özellikle faydalıdır.
Takvim hesaplayıcı, tarih hesaplamaları için aşağıdaki algoritmayı kullanır:
Yıllar eklemek/çıkarmak için:
Aylar eklemek/çıkarmak için:
Haftalar eklemek/çıkarak için:
Günler eklemek/çıkarak için:
Artık Yıllar: Yıllar eklerken/çıkarırken, 29 Şubat için özel dikkat gösterilir. Eğer elde edilen yıl artık bir yıl değilse, tarih 28 Şubat'a ayarlanır.
Ay sonu tarihleri: Aylar eklerken/çıkarırken, eğer elde edilen tarih mevcut değilse (örneğin, 31 Nisan), ayın son geçerli tarihine (örneğin, 30 Nisan) ayarlanır.
M.Ö./M.S. Geçişi: Hesaplayıcı, M.Ö./M.S. geçişi boyunca tarihleri doğru bir şekilde yönetir, Gregorian takviminde 0 yılı olmadığını dikkate alır.
Tarih Sınırları: Hesaplayıcı, temel tarih sisteminin sınırlarını, genellikle 1 M.S. 1 Ocak ile 9999 M.S. 31 Aralık arasında saygı gösterir.
Takvim Hesaplayıcı'nın birçok pratik uygulaması vardır:
Proje Yönetimi: Proje son tarihlerini, kilometre taşları tarihlerini ve sprint sürelerini hesaplama.
Mali Planlama: Ödeme son tarihlerini, kredi koşullarını ve yatırım vadesi tarihlerini belirleme.
Etkinlik Planlama: Tekrarlayan etkinlikler, festival programları veya yıldönümü kutlamaları için tarihleri hesaplama.
Hukuki ve Sözleşmesel: Hukuki işlemler için son tarihleri, sözleşme bitiş tarihlerini veya bildirim sürelerini hesaplama.
Akademik Planlama: Dönem başlangıç/bitiş tarihlerini, ödev son tarihlerini veya araştırma zaman çizelgelerini belirleme.
Seyahat Planlama: Seyahat sürelerini, vize sona erme tarihlerini veya rezervasyon sürelerini hesaplama.
Sağlık Hizmetleri: Takip randevularını, ilaç döngülerini veya tedavi sürelerini planlama.
Üretim ve Lojistik: Üretim programlarını, teslim tarihlerini veya bakım aralıklarını planlama.
Takvim Hesaplayıcı çok yönlü olsa da, tarih ve zaman manipülasyonu için diğer araçlar ve yöntemler vardır:
Elektronik Tablo Fonksiyonları: Microsoft Excel ve Google Sheets gibi programlar, basit hesaplamalar için yerleşik tarih fonksiyonları sunar.
Programlama Dili Kütüphaneleri: Çoğu programlama dili, sağlam tarih/zaman kütüphanelerine sahiptir (örneğin, Python'daki datetime, JavaScript'teki Moment.js).
Çevrimiçi Tarih Hesaplayıcıları: Çeşitli web siteleri, genellikle belirli odaklarla birlikte basit tarih hesaplama araçları sunar (örneğin, iş günü hesaplayıcıları).
Proje Yönetim Yazılımları: Microsoft Project veya Jira gibi araçlar, programlama işlevsellikleri içinde tarih hesaplama özellikleri içerir.
Unix Zaman Damgası Hesaplayıcıları: Teknik kullanıcılar için, bu araçlar tarihleri 1 Ocak 1970'ten bu yana geçen saniyeler olarak işler.
Mobil Uygulamalar: Birçok takvim ve verimlilik uygulaması tarih hesaplama özellikleri içerir.
Tarih aritmetiği kavramı, takvim sistemlerinin gelişimiyle birlikte evrim geçirmiştir:
Antik Medeniyetler: Mısırlılar, Babilliler ve Mayalar, tarih hesaplamaları için karmaşık takvim sistemleri geliştirmiştir.
Julian Takvimi (M.Ö. 45): Julius Caesar tarafından tanıtılan bu takvim, güneş yılını standartlaştırdı ve artık yıl kavramını tanıttı, böylece uzun vadeli tarih hesaplamalarını daha doğru hale getirdi.
Gregorian Takvimi (1582): Papa XIII. Gregory tarafından tanıtılan bu takvim, Julian takviminin artık yıl kuralını geliştirdi ve tarih hesaplamalarının uzun vadeli doğruluğunu artırdı.
Standart Zamanın Benimsenmesi (19. yüzyıl): Zaman dilimlerinin ve standart zamanın tanıtılması, uluslararası tarih ve zaman hesaplamalarını daha hassas hale getirdi.
Bilgisayar Çağı (20. yüzyıl): Bilgisayarların ortaya çıkışı, çeşitli tarih/zaman kütüphanelerinin ve algoritmalarının geliştirilmesine yol açtı ve karmaşık tarih aritmetiğini erişilebilir ve hızlı hale getirdi.
Unix Zaman Damgası (1970): Tarihleri 1 Ocak 1970'ten bu yana geçen saniyeler olarak temsil etmenin standart bir yolunu tanıttı ve bilgisayar sistemlerinde tarih aritmetiğini basitleştirdi.
ISO 8601 (1988): Tarih ve zaman temsili için bu uluslararası standart, farklı sistemler ve kültürler arasında tarih aritmetiğini standartlaştırmaya yardımcı oldu.
Aşağıda, çeşitli programlama dillerinde tarih hesaplamalarını gerçekleştirmek için bazı kod örnekleri verilmiştir:
1from datetime import datetime, timedelta
2
3def add_time(date_str, years=0, months=0, weeks=0, days=0):
4 date = datetime.strptime(date_str, "%Y-%m-%d")
5
6 # Yıl ve ay ekle
7 new_year = date.year + years
8 new_month = date.month + months
9 while new_month > 12:
10 new_year += 1
11 new_month -= 12
12 while new_month < 1:
13 new_year -= 1
14 new_month += 12
15
16 # Ay sonu durumlarını yönet
17 last_day_of_month = (datetime(new_year, new_month % 12 + 1, 1) - timedelta(days=1)).day
18 new_day = min(date.day, last_day_of_month)
19
20 new_date = date.replace(year=new_year, month=new_month, day=new_day)
21
22 # Haftalar ve günler ekle
23 new_date += timedelta(weeks=weeks, days=days)
24
25 return new_date.strftime("%Y-%m-%d")
26
27## Örnek kullanım
28print(add_time("2023-01-31", months=1)) # Çıktı: 2023-02-28
29print(add_time("2023-02-28", years=1)) # Çıktı: 2024-02-28
30print(add_time("2023-03-15", weeks=2, days=3)) # Çıktı: 2023-04-01
31
1function addTime(dateStr, years = 0, months = 0, weeks = 0, days = 0) {
2 let date = new Date(dateStr);
3
4 // Yıl ve ay ekle
5 date.setFullYear(date.getFullYear() + years);
6 date.setMonth(date.getMonth() + months);
7
8 // Haftalar ve günler ekle
9 date.setDate(date.getDate() + (weeks * 7) + days);
10
11 return date.toISOString().split('T')[0];
12}
13
14// Örnek kullanım
15console.log(addTime("2023-01-31", 0, 1)); // Çıktı: 2023-02-28
16console.log(addTime("2023-02-28", 1)); // Çıktı: 2024-02-28
17console.log(addTime("2023-03-15", 0, 0, 2, 3)); // Çıktı: 2023-04-01
18
1import java.time.LocalDate;
2import java.time.Period;
3
4public class DateCalculator {
5 public static String addTime(String dateStr, int years, int months, int weeks, int days) {
6 LocalDate date = LocalDate.parse(dateStr);
7
8 // Yıl, ay, hafta ve gün ekle
9 LocalDate newDate = date
10 .plus(Period.ofYears(years))
11 .plus(Period.ofMonths(months))
12 .plus(Period.ofWeeks(weeks))
13 .plus(Period.ofDays(days));
14
15 return newDate.toString();
16 }
17
18 public static void main(String[] args) {
19 System.out.println(addTime("2023-01-31", 0, 1, 0, 0)); // Çıktı: 2023-02-28
20 System.out.println(addTime("2023-02-28", 1, 0, 0, 0)); // Çıktı: 2024-02-28
21 System.out.println(addTime("2023-03-15", 0, 0, 2, 3)); // Çıktı: 2023-04-01
22 }
23}
24
Bu örnekler, Python, JavaScript ve Java dillerinde tarih hesaplamalarını nasıl gerçekleştireceğinizi göstermektedir, ay sonu tarihleri ve artık yıllar gibi çeşitli kenar durumlarını yönetmektedir.
31 Ocak 2023'e 1 ay eklemek:
29 Şubat 2024'e (bir artık yıl) 1 yıl eklemek:
15 Mart 2023'ten 2 hafta ve 3 gün çıkarmak:
31 Temmuz 2022'ye 18 ay eklemek:
Richards, E. G. (2013). Takvimler. S. E. Urban & P. K. Seidelmann (Eds.), Astronomik Almanak için Açıklayıcı Ek (3. baskı, s. 585-624). Mill Valley, CA: University Science Books.
Dershowitz, N., & Reingold, E. M. (2008). Takvimsel Hesaplamalar (3. baskı). Cambridge University Press.
Kuhn, M., & Johnson, K. (2013). Uygulamalı Tahmin Modelleme. Springer.
"Tarih ve Zaman Sınıfları". Oracle. https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html
"datetime — Temel tarih ve zaman türleri". Python Yazılım Vakfı. https://docs.python.org/3/library/datetime.html
"Tarih". Mozilla Geliştirici Ağı. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date
İş akışınız için faydalı olabilecek daha fazla aracı keşfedin