14 Ocak 2015 Çarşamba

Tarih&Saat İşlemleri

                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