8 Kasım 2017 Çarşamba

Date Sınıfı

Giriş
Şu satırı dahil ederiz
import java.util.Date;
Saat dilimi bilgisinden mahrumdur, sadece epoch'tan beri geçen süreyi, milisaniye olarak saklar. Sakladığı milisaniyeyi gün,ay yıl, saat gibi parçalamak için uygun metodlar sunmaz. Bu iş için Calendar sınıfı daha uygundur.

constructor - default
Şöyle kurulur.
Date timeNow = new Date();
Bu kod aslında şuna denktir.
Date timeNow = new Date(System.currentTimeMillis());
Sınıf yazdırılabilir.
System.out.println(new java.util.Date());
constructor - milliseconds
Epoch'tan itibaren geçen milisaniye ile nesneyi oluşturur.
Örnek
Şöyle yaparız.
long ms = 1469109609000;
Date date = new Date(ms);
Örnek
Bu constructor calendar.setTimeInMillis() ile aynıdır. Şöyle yaparız.
Long timeInMilis = 1509966414000l;
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timeInMilis);
System.out.println("Using Calendar instance : "+cal.getTime());

Date date = new Date(timeInMilis);
System.out.println("Using date instance : "+date);
Çıktı olarak şunu alırız.
Using Calendar instance : Mon Nov 06 16:36:54 IST 2017
Using date instance : Mon Nov 06 16:36:54 IST 2017
constructor - yıl + ay + gün 
İmzası şöyle
new Date(int year, int month, int date) 
Bu metod eski ve  kullanılmamalı açıklaması şöyle
/**
 * Allocates a <code>Date</code> object and initializes it so that
 * it represents midnight, local time, at the beginning of the day
 * specified by the <code>year</code>, <code>month</code>, and
 * <code>date</code> arguments.
 *
 * @param   year    the year minus 1900.
 * @param   month   the month between 0-11.
 * @param   date    the day of the month between 1-31.
 * @see     java.util.Calendar
 * @deprecated As of JDK version 1.1,
 * replaced by <code>Calendar.set(year + 1900, month, date)</code>
 * or <code>GregorianCalendar(year + 1900, month, date)</code>.
 */
Yani eğer yıl olarak 1994 yılına erişmek istersek ilk parametre 94 olmalı.

before metodu
İki Date nesnesini karşılaştırır. Java 8 ile gelen yeni sınıflar isBefore(...) isimli metodlar kullanıyor. Bence daha anlaşılır olmuş.
Date startDate = ...; Date date = ...;
if (date.before(startDate)) {...}

from metodu
Java 8 ile gelen Instant nesnesinden Date oluşturur.
LocalDate currentDate = LocalDate.now();
Date d1 = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
Aynı şeyi LocalDateTime ile de yapabiliriz.
LocalDateTime localDateTime = ...
Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
getTime
Epoch'tan beri geçen süreyi milisaniye olarak alırız. İki Date arasındaki farkı şöyle alırız.
Date dateA = ...;
Date dateB = ...;

// detect difference
long diffInMillis = Math.abs(dateA.getTime() - dateB.getTime());
if (diffInMillis < 5 * 60 * 1000) {
    // all is good
} else {
    // bad: 5 or more minutes apart
}
toInstant
Eski Java sınıflarını yeni sınıflara çevirmek için kullanılır.
Instant instant = myDate.toInstant();

Hiç yorum yok:

Yorum Gönder