Java’da tarih ile ilgili işlem yapmak için Date sınıfında faydalanırız. Date sınıfı belirli bir zaman değerini bir değişkene atamamızı ve üzerinde ekleme, çıkarma ya da dönüştürme gibi işlemler yapmamızı sağlar. Date sınıfını new Date() yapıcısıyla oluşturduğumuzda o anın tarihine ve saatine (kodun çalıştığı bilgisayarın saati) sahip bir zaman değişkenine sahip oluruz.
import java.util.Date;
public class DateOrnek1 {
public static void main(String[] args) {
Date simdikiZaman = new Date();
System.out.println(simdikiZaman.toString());
}
}
Bir zamanın, UNIX Timestamp değerini öğrenmek için getTime metodunu kullanabilirsiniz.
import java.util.Date;
public class DateOrnek2 {
public static void main(String[] args) {
Date now = new Date();
System.out.println(now.toString());
System.out.println("Timestamp : " + now.getTime());
}
}
NOT: UNIX Timestamp, 1 Ocak 1970 00:00 tarihinden bu yana geçen zamanın milisaniye cinsinden değeridir. Eğer tarihi farklı bir şekilde ekrana yazmanız gerekirse, SimpleDateFormat sınıfından yardım alabilirsiniz. Bir Date değişkenini son kullanıcının anlayabileceği bir formatta yazdırmak için kullanılan SimpleDateFormat, aynı zamanda kullanıcının elle girdiği bir tarihi Date değişkenine çevirebilir. Aşağıdaki örnekte zaman bilgisi, tarih yıl - ay - gün olarak yazdırılıyor.
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateOrnek3 {
public static void main(String[] args) throws ParseException {
Date simdikiZaman = new Date();
System.out.println(simdikiZaman.toString());
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(df.format(simdikiZaman));
}
}
Eğer yine aynı formatta bir tarihi (örneğin 1984/01/01) Date tipinde bir değişkene atamak isterseniz parse metodundan faydalanabilirsiniz. Bu metod verilen bir String tarih değerini Date tipine çevirecektir. Eğer çevirme işlemi başarısız olursa ParseException fırlatılır.
NOT: Hata fırlatma konusu için try / catch / finally bloklarının anlatıldığı Java’da olağan dışı durumlar konusuna göz atabilirsiniz.
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateOrnek4 {
public static void main(String[] args) throws ParseException {
Date simdikiZaman = new Date();
System.out.println(simdikiZaman.toString());
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date tarih = df.parse("1984/01/01");
System.out.println(tarih);
}
}
DateFormatter ile kullanabileceğiniz diğer tanımlar aşağıdaki şekildedir:
Harf | Temsil ettiği parça | Örnek |
y | Yıl | 1996; 96 |
M | Yıl içinde ay | July; Jul; 07 |
w | Yıl içinde hafta | 27 |
W | Ay içinde hafta | 2 |
D | Yıl içinde gün | 189 |
d | Ay içinde gün | 10 |
F | Ay içinde haftanın günü | 2 |
E | Haftanın günü | Tuesday; Tue |
a | Sabah/akşam | PM |
H | Gün içinde saat (0-23) | 0 |
k | Gün içinde saat (1-24) | 24 |
K | Sabah/akşam için saat (0-11) | 0 |
h | Sabah/akşam için saat (1-12) | 12 |
m | Saat içinde dakika | 30 |
s | Dakika içinde saniye | 55 |
S | Milisaniye | 978 |
Son olarak tarih içerisinde belli bir günü bir değişkene atamak için Java bizlere Calendar adında bir sınıf sunar. Bu sınıf sayesinde tarih akışı içinde herhangi bir güne ulaşabiliriz.
Aşağıda 1 Ocak 1984 tarihini temsil eden bir değişken tanımlaması yapılmıştır.
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateOrnek5 {
public static void main(String[] args) {
Calendar takvim = new GregorianCalendar(1984, 01, 01);
Date tarih = takvim.getTime();
System.out.println(tarih.toString());
}
}