Giriş
Şu satırı dahil ederiz
Şöyle kurulur.
Epoch'tan itibaren geçen milisaniye ile nesneyi oluşturur.
Örnek
Şöyle yaparız.
Bu constructor calendar.setTimeInMillis() ile aynıdır. Şöyle yaparız.
Bu metod yerine GregorianCalendar kullanılabilir.
İmzası şöyle.
Örnek ver
constructor - yıl + ay + gün + saat + dakika + saniye - Kullanmayın
Örnek ver
constructor - String - Kullanmayın
Örnek ver
Örnek
En büyük tarihi bulmak için şöyle yaparız.
Bu metodu yerine
UTS metodu- Kullanmayın
Örnek ver
Şu satırı dahil ederiz
import java.util.Date;
Saat dilimi bilgisinden mahrumdur, sadece epoch'tan - yani January 1, 1970, 00:00:00 GMT veya UTC - beri geçen süreyi, milisaniye olarak saklar. Açıklaması şöyle.
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.
The class Date represents a specific instant in time, with millisecond precision.
Maden Epoch'tan Beri Geçen Süreyi Saklıyor, Neden Bunu Göremiyoruz
Açıklaması şöyle. Çünkü bu nesnenin toString() metodunu UTC değeri yerel saate çeviriyor.
constructor - defaultWhen you print an object of java.util.Date, its toString method returns the date-time in the JVM's timezone, calculated from this milliseconds value. If you need to print the date-time in a different timezone, you will need to set the timezone to SimpleDateFormat and obtain the formatted string from it.
Şö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 - millisecondsEpoch'tan itibaren geçen milisaniye ile nesneyi oluşturur.
Örnek
Şöyle yaparız.
long ms = 1469109609000;
Date date = new Date(ms);
ÖrnekBu 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 - KullanmayınBu metod yerine GregorianCalendar kullanılabilir.
İ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ı. Bu metod yerine Calender.set(...) metodu kullanılabilir. Ancak fark olarak yıl parametresi 94 yerine 1994 olmalı. Yıl değerinin neden 1900'den başladığına dair bir açıklama şöyle.Basically the original java.util.Date designers copied a lot from C. What you're seeing is the result of that - see the tm struct. So you should probably ask why that was designed to use the year 1900. I suspect the fundamental answer is "because we weren't very good at API design back when tm was designed." I'd contend that we're still not very good at API design when it comes to dates and times, because there are so many different use cases.constructor - yıl + ay + gün + saat + dakika - Kullanmayın
Örnek ver
constructor - yıl + ay + gün + saat + dakika + saniye - Kullanmayın
Örnek ver
constructor - String - Kullanmayın
Örnek ver
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)) {...}
compareTo metoduÖrnek
En büyük tarihi bulmak için şöyle yaparız.
Date finalexamDate = Person.stream()
.map(PersonDetails::getexamDate)
.max(Date::compareTo)
.orElse(null);
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.
Örnek
İki Date arasındaki farkı şöyle alırız.
Eski Java sınıflarını yeni sınıflara çevirmek için kullanılır.
toLocaleString metodu - KullanmayınÖrnek
İ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
}
toInstantEski Java sınıflarını yeni sınıflara çevirmek için kullanılır.
Instant instant = myDate.toInstant();
Bu metodu yerine
DateFormat.getDateTimeInstance()
ile formatlama yapılabilir.UTS metodu- Kullanmayın
Örnek ver
Hiç yorum yok:
Yorum Gönder