Java Date, Calendar ve Locale Sınıfları (Kapsamlı Rehber)

İngilizce'ye Geç
Kısa Özet: Java Tarih, Saat ve Sayı Sınıfları Ne İşe Yarar?

Java'da eski tarih/saat işlemleri için java.util.Date ve java.util.Calendar sınıfları kullanılır. Tarihleri bölgesel formatlara (Örn: dd/MM/yyyy) çevirmek için DateFormat, para ve sayı biçimleri için ise NumberFormat tercih edilir. java.util.Locale ise uygulamanın dil ve ülke ayarlarını tutarak yerelleştirme (Localization) sürecinin merkezinde yer alır.

Bu yazıda Java ile tarih, sayı ve para birimi sınıflarını detaylı bir şekilde inceliyoruz. Farklı ülkelere göre tarih formatlamak, para birimlerini yerel ayara göre göstermek ve çok dilli (Multi-language) uygulamalar geliştirmek istiyorsanız java.text ve java.util paketlerindeki temel sınıfları çok iyi bilmeniz gerekir.

Java ekosistemiyle ilgili diğer modern teknolojiler için En İyi Java Frameworkleri rehberimize de göz atabilirsiniz.


1. java.util.Date

Date sınıfı, Java'nın en temel ve en eski tarih-saat sınıflarından biridir. Zamanı 1 Ocak 1970'ten (Epoch) itibaren geçen milisaniye cinsinden tutar. Bugün birçok metodu (Örn: getYear(), getMonth()) deprecated (kullanımdan kalkmış) kabul edilse de, eski projelerde (legacy code) ve Calendar ile DateFormat arasında veri transferi yapılırken hâlâ yoğun olarak karşınıza çıkar.

Date now = new Date();
System.out.println(now); // Çıktı: Fri Aug 14 11:30:00 TRT 2026

2. java.util.Calendar

Calendar sınıfı, karmaşık tarih hesaplamalarını inanılmaz derecede kolaylaştırır. Bir tarihe gün ekleme, ay değiştirme veya haftanın gününü bulma gibi işlemler için kullanılır. Soyut (abstract) bir sınıf olduğu için doğrudan new anahtar kelimesiyle oluşturulmaz; bunun yerine getInstance() tasarım kalıbı (design pattern) ile elde edilir.

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 5); // Mevcut güne 5 gün ekler

3. java.text.DateFormat

DateFormat, tarihleri farklı ülke, dil ve bölgelere göre biçimlendirmek (formatting) ve metinleri tarihe çevirmek (parsing) için kullanılır. Aynı tarih objesi, farklı Locale ayarlarında bambaşka şekilde ekrana basılabilir.

// Örnek Format Çıktıları:
// 14.08.2026 11:30 (TR)
// Aug 14, 2026 (EN-US)
// 14 Ağustos 2026 Cuma

Çok dilli ve uluslararası (I18N) uygulamalarda kullanıcıya doğru tarihi göstermek için bu sınıf şarttır.

4. java.text.NumberFormat

NumberFormat, sayısal değerleri, ondalık formatları ve para birimlerini (Currency) yerel ayara göre formatlar. Aynı sayının Türkiye, ABD veya Almanya için binlik ayracı ve ondalık işareti farklıdır.

// 12345.67 sayısının formatlanmış halleri:
// 12.345,67 (Türkiye / Almanya)
// 12,345.67 (ABD / İngiltere)
// $12,345.67 (ABD Para Birimi)
// 12.345,67 ₺ (TR Para Birimi)

Finansal uygulamalar, e-ticaret siteleri ve raporlama ekranlarında NumberFormat kullanmak kritik bir zorunluluktur.

5. java.util.Locale

Locale sınıfı, belirli bir coğrafi, politik veya kültürel bölgeyi temsil eden dil ve ülke bilgisini tutar. Yerelleştirme işlemlerinin tam merkezinde yer alır ve yukarıda bahsettiğimiz tüm formatlama (DateFormat, NumberFormat) sınıflarıyla birlikte çalışarak onların nasıl davranacağını belirler.

Locale usLocale = new Locale("en", "US"); // İngilizce, ABD
Locale trLocale = new Locale("tr", "TR"); // Türkçe, Türkiye

6. Kullanım Şekline Göre Java Tarih ve Sayı Sınıfları

Aşağıdaki özet tablo, en sık karşılaşılan tarih ve sayı senaryolarında hangi sınıfın nasıl kullanılacağını gösteren bir kopya kâğıdı (cheat sheet) niteliğindedir.

Senaryo / İhtiyaç Java Kod Örneği
Geçerli tarih ve saati alma Date d = new Date();
String s = d.toString();
Tarih hesaplaması (Gün/Ay Ekleme) Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 1);
Farklı yerel ayarda (Locale) tarih hesaplama Locale loc = new Locale("en", "GB");
Calendar c = Calendar.getInstance(loc);
Farklı stillerle tarihi String'e formatlama Date d = Calendar.getInstance().getTime();
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, locale);
String dateStr = df.format(d);
Sayısal veya parasal değerleri yerel formata çevirme NumberFormat nf = NumberFormat.getCurrencyInstance(locale);
String moneyStr = nf.format(1500.50);

7. Modern Java (java.time API) Notu

🚨 Önemli Bilgi: Java 8 ile birlikte modern ve thread-safe (iş parçacığı güvenli) olan java.time API (LocalDate, LocalTime, LocalDateTime, DateTimeFormatter) tanıtılmıştır.

Eski projelerde (Java 7 ve öncesi) Date, Calendar ve DateFormat sınıfları mecburen kullanılırdı. Ancak sıfırdan geliştirdiğiniz güncel Java/Spring Boot projelerinde tarih-saat işlemleri için kesinlikle java.time API kullanmalısınız. Yine de legacy sistemleri okumak, bakım yapmak veya mülakatlarda sorulan Java temellerini bilmek için bu klasik sınıfları öğrenmek zorunludur.

Sonuç

Bu yazıda Java'nın klasik tarih, saat ve sayı sınıflarını kapsamlı bir şekilde inceledik. Artık Date, Calendar, DateFormat, NumberFormat ve Locale sınıflarının ne işe yaradığını ve birbirleriyle nasıl entegre çalıştıklarını çok daha net biliyorsunuz. Bu mimariyi anlayarak uygulamalarınıza kusursuz bir yerelleştirme (Localization) desteği ekleyebilirsiniz. İyi kodlamalar!

Etiketler: java date, java calendar, java numberformat, java locale, java dateformat

Son Güncelleme: 2026

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Güncel yazılım teknolojilerinin takip edildiği blog.

Java ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *