Bugünkü
konumuz tarihler. Tarihlerle ilgili farklı paket,sınıf ve metodlar
inceleyeceğiz. Hangisinin nerede kullanılması veya hangi koşullarda sizin
işinizi görecek olanı seçmek ise size kalmış. Sözü fazla uzatmadan date
sınıfını inceleyelim. Date sınıfında eskiyen bir çok metod vardır , fakat
bununla birlikte hala kullanılan önemli metodlar vardır. Biz örneklerimizi
incelemeye başlayalım.
public
static void main(String[] args) {
Date
date = new Date();
long
time = date.getTime();
System.out.println(time);
//1970'dan şuana milli saniye
long
now = System.currentTimeMillis();
System.out.println(now);//aynı
işlev
Date
date2 = new Date(now);
System.out.println(date2);
//Ayrıntılı Tarih
int
karsilastir= date.compareTo(date2);
System.out.println(karsilastir);
//burada ise 2 tarihi karsilastirdik
//aynı
olduğundan 0 döner
//negatif olsa soldaki daha eski manasındaydı
}
Şimdi de Calendar sınıfını inceleyelim. Date sınıfındaki metodlar java tarafından
eski , tabiri caizse modası geçmiş olarak tabir edilir ve kullanılması tavsiye
edilmez. Derleyici tarafından da üzeri çizikli olur. Onun yerine Calendar
sınıfını kullanılması daha yerinde olur. Fakat Calendar sınıfı soyut bir sınıf
olduğu için Date sınıfındaki Date date= new Date(); diye obje oluşturamayız.
Buraya dikkat etmemizde fayda var.
public static void main(String[]
args) {
Calendar
calendar = Calendar.getInstance();
//Calender calender = new Calendar(); soyut sınıfı olduğundan hata
System.out.println(calendar
instanceof GregorianCalendar);
//GregorianCalender extends Calendar manasındadır.
System.out.println(calendar);
Date
date = calendar.getTime();//kalıtım olduğundan doğru ifade
Date
date2 = new Date();
System.out.println(date
+ "\n" + date2);
//
her iki ifadenin de çıktısı aynıdır
int
year= calendar.get(Calendar.YEAR);//yılı verir
int
month= calendar.get(Calendar.MONTH); //ayı verir
int
day= calendar.get(Calendar.DAY_OF_MONTH);//ayın haftası
int
hour= calendar.get(Calendar.HOUR); //12 saatlik dilimine göre
System.out.println("Yil:" + year + " Ay:" + month +
" Gun:" + day + " Saat:" + hour);
//bu
örnekler tabi ki çoğaltılabilir. ctrl+space siz de görebilirsiniz
}
Şimdi de text.DateFormat ve text.SimpleDataFormat
sınıflarını işleyeceğiz. Date format sınıfı da soyut bir sınıftır. Simple sınıfı
da ondan kalıtıldığı için doğal olarak o da soyut olur ve new objesini kullanamayız,
onun yerine getInsance veya overload moteodlar kullanılır. Aşağıdaki örnekte
göreceksiniz bu iki sınıfla küçük örnekler yaptık. Burada Simple sınıfı bana
çok kullanışlı geldi, fakat sizlerin kullanımına göre tabi bu değişebilir
Son olarak da tarih ve saatlerin formatlanması konusunda bakalım. Gerekli yorumlar kod kısmında yer almaktadır.
public static void main(String[] args) {
NumberFormat numberFormat = NumberFormat.getInstance();
int maxFractionDigits = numberFormat.getMaximumFractionDigits();
// varsayilan olarak 3 tur
int minFractionDigits = numberFormat.getMinimumFractionDigits();
// varsayilan olarak 0 dir
System.out.println("minimum fraction digits :" + minFractionDigits);
System.out.println("maximum fraction digits :" + maxFractionDigits);
double salary = 123.456789;
System.out.println(salary);
System.out.println(numberFormat.format(salary));
numberFormat.setMaximumFractionDigits(5);
// virgulden sonraki kullanilan rakam sayisi maximum 5 olsun.
System.out.println(numberFormat.format(salary));
double salary2 = 123;
System.out.println(salary2); // double sayi icin tek 0 koyacaktir.
numberFormat.setMinimumFractionDigits(2);
// virgulden sonraki kullanilan rakam sayisi minimum 2 olsun.
// eger yoksa 00 olarak ekleyecektir.
System.out.println(numberFormat.format(salary2));
numberFormat.setMaximumIntegerDigits(5);
// virgulden once maximum 5 karakter olsun
numberFormat.setMinimumIntegerDigits(3);
// virgulden once minimum 3 karakter olsun.
System.out.println(numberFormat.format(123456789));
System.out.println(numberFormat.format(89));
}
Şimdi de format ve parse metodlarına bakıp yazımı bitirelim
public static void main(String[] args) {
NumberFormat numberFormat = NumberFormat.getInstance();
// NumberFormat sinifindadki parse Number->String
// NumberFormat sinifindaki format metodu String->Number
// parse metodu ParseException firlatabilir.
try {
System.out.println(numberFormat.parse("123.456789"));
System.out.println(numberFormat.parse("123,456789"));
System.out.println(numberFormat.parse("1a23456789"));
//System.out.println(numberFormat.parse("a123456789"));
System.out.println(numberFormat.format(123.23));
} catch (ParseException e) {
e.printStackTrace();
}
}
}
Kaynak
http://www.injavawetrust.com/pure-java-61-dates-numbers-currency-date-calendar/
http://www.injavawetrust.com/pure-java-62-dates-numbers-currency-dateformat-simpledateformat/
http://www.injavawetrust.com/pure-java-64-dates-numbers-currency-numberformat-currency-decimalformat/
Hiç yorum yok:
Yorum Gönder