JavaScript Temelleri

Bölüm 12

Date Nesne Sınıfı

Bölüm 12 Sayfa 1

12.1 - Date (Tarih) Nesne Sınıfı Örnekleri Yapılandırıcısı

Date (Tarih) nesne sınıf örnekleri yapılandırıcısı, öntanımlı Date() fonksiyonudur. Bu fonksiyonun tarih nesne sınıfı örneklerinin yaratılması için, üç türlü kullanım olanağı bulunmaktadır.

tarihSınıfıNesneÖrneği = new Date();
		

veya,

tarihSınıfıNesneÖrneği = new Date(Değer);
		

veya,

tarihSınıfıNesneÖrneği = new Date(yıl, ay[, gün[, saat[, dakika[, saniye[,milisaniye]]]]]]]);
		

Burada,

Değer : Eğer bir sayısal veri ise, değer geceyarısı Ocak 1, 1970 ile belirlenmiş tarih arasında UTC (Universal Coordinated Time) (eski adı Greenwich Mean Time GMT) olarak milisaniye cinsinden değerdir. Eğer bir karakter dizigisi verisi ise, aşağıda görülecek olan parse() metoduna göre çözümlenir.

yıl : 2008 gibi tam yıl, 08 olarak belirtilmez.

ay : 0 (dahil) (Ocak) ile 11(dahil) (Aralık) arası bir tamsayı.

gün : 1 (dahil) (Ocak) ile 31(dahil) arası bir tamsayı.

saat : 0 (dahil) (Ocak) ile 23(dahil) arası bir tamsayı.

dakika : 0 (dahil) (Ocak) ile 59(dahil) arası bir tamsayı.

saniye : 0 (dahil) (Ocak) ile 59(dahil) arası bir tamsayı.

milisaniye : 0 (dahil) (Ocak) ile 999(dahil) arası bir tamsayı. 1 saniye = 1000 milisaniye olarak kabul edilir.

Tarih sınıf nesne örnekleri yapılandırıcısının farklı argümanlarla verdiği sonuçların görülmesi için yazılan bir JavaScript programının yazılımı ve ilişkili olduğu sayfada verdiği sonuçlar, aşağıda görülmektedir.

...
sonuçYaz('new Date() : ', new Date() 'b12.1-uyg-1-sonuç-1');
			
sonuçYaz('new Date() : ', new Date(0), 'b12.1-uyg-1-sonuç-2');

sonuçYaz('new Date(2003, 11) : ', new Date(2003, 11), 'b12.1-uyg-1-sonuç-3');

sonuçYaz('new Date(2003, 11, 03) : ', new Date(2003, 11, 03), 'b12.1-uyg-1-sonuç-4');

sonuçYaz('new Date(2003, 11, 03, 22) : ', new Date(2003, 11, 03, 22), 'b12.1-uyg-1-sonuç-5');

sonuçYaz('new Date(2003, 11, 03, 22,16) : ', new Date(2003, 11, 03, 22, 16), 'b12.1-uyg-1-sonuç-6');

sonuçYaz('new Date(2003, 11, 03, 22, 16, 33) : ', new Date(2003, 11, 03, 22,16, 33), 'b12.1-uyg-1-sonuç-7');

sonuçYaz('new Date(2003, 11, 03, 22, 16, 33, 400) : ', new Date(2003, 11, 03, 22, 16, 33, 400), 'b12.1-uyg-1-sonuç-8');
...
		

Program Sonucu :

Eğer değer bir karakter dizgisi (kd) verisi ise, bu durumda, parse() metoduna uygun olan aşağıdaki şablonlar kullanılabilir:

Tarih nesne sınıf yapılandırıcısı Date() fonksiyonu, bir fonksiyondur. ve fonksiyon nesne sınıfının bir örneğidir. Fonksiyon nesne sınıfı örneklerine özgü özellikler yanında, tarih nesne sınıfı yapılandırıcısnın parse() ve UTC() metotları bulunmaktadır.

12.2 - Date (Tarih) Nesne Sınıfı Örnekleri Yapılandırıcısının Özellikleri

12.2.1 - Date (Tarih) Nesne Sınıfı Örnekleri Yapılandırıcısının prototype Özelliği

Tarih nesne sınıfı yapılandırıcının prototype özelliğinin başlangıç değeri, bir tarih nesne sınfı örneğidir. Buna kısaca tarih sınıfı prototip nesnesi adı verilir.

12.2.2 - Date (Tarih) Nesne Sınıfı Örnekleri Yapılandırıcısının parse() Metodu

Bu metot, yukarıda belirtilen tarih verisi belirtmeye uygun karakter dizgisi veri alır ve 1 Ocak 1970 geceyarısından o anki geçerli tarihe kadar tarih aralığına karşı gelen milisaniye sayısını belirten bir tamsayı değerini geri döndürür. Kullanımı,

Date.parse(Tarih Oluşturmaya Uygun Olan Karakter Dizigisi);
		

şeklindedir. Geri döndürülen milisaniye sayısı, bir tür kriptolanarak sıkıştırılmış bir tarih kapsülüdür. Bu değer, tarih verisine gerksinme duyulan her yerde kullanılabilir. Örnek olarak, ileride göreceğimiz, verilerin bir disk dosyasında saklanmasında, saklanan kayıtlar için bir tarih damgası (time stamp) olarak kullanılabilir. Bu tarih damgasının istenilen şekilde bir tarih verisi haline getirilmesi için, sadece uygun bir algoritmanın kullanılması ile çözümlenmesi (parse) yeterlidir. İstenirse, bu kriptolanmış tarih verisi, tarih nesne sınıfı örnekleri yapılandırıcısı Date() fonksiyonu kullanılarak yeniden tarih nesnesi haline restitüe edilebilir. Yani, yeniden eski haline dönüştürülebilir.

Aşağıda görülen JavaScript programında tarih oluşturmaya uygun bir kd verisinin 1 Ocak 1970 den, kd verisinde belirtilen tarihe kadar geçmiş milisaniye sayısına dönüştürülmesi ve bu milisaniye sayısından (tarih damgası), istenilen bir tarih verisinin elde edilmesinin, bir örneği verilmiştir. Bu programın bir uygulama sayfasında verdiği sonuç aşağıda görülmektedir:

...
function günSayısı(td) {

var dkms = 1000 * 60, saat = dkms * 60, gün = saat * 24;

return Math.round(Math.abs(td / gün));
}

function günSay() {

var tarih = '18 Nov 1988 12:46';

td = Date.parse(tarih);

sonuçYaz('1 Ocak 1970 gece yarısından ' + tarih + 'süresi arasında geçen gün sayısı = ', günSayısı(td), 'b12.2.2-uyg-1-sonuç-1');
}

...
		

Program Sonucu :

Aşağıda görülen JavaScript programında tarih oluşturmaya uygun bir kd verisinin tarih damgasına dönüştürülmesi ve bu tarih damgasından yeniden bir tarih sınıfı nesne örneğinin yaratılmasının bir örneği verilmiştir. Bu programın bir uygulama sayfasında verdiği sonuç aşağıda görülmektedir:

...
function tarihDamgası(tarihVerisi) {

return Date.parse(tarihVerisi);
}

function geriKazanım(td) {

return new Date(td);
}


function tarihBildir() {

var tarih = '18 Nov 1988 12:46', td = tarihDamgası(tarih);

sonuçYaz('Verilen Tarih : ', tarih, 'b12.2.2-uyg-2-sonuç-1');

sonuçYaz('Üretilen Tarih Damgası : ', td + ' (ms)', 'b12.2.2-uyg-2-sonuç-2');

sonuçYaz('Geri Kazanılan Tarih : ', geriKazanım(td), 'b12.2.2-uyg-2-sonuç-3');
}

...
		

Program Sonucu :

Tarih damgasından yeniden tarih sınıfı nesne örneği üretildikten sonra, tarih sınıfı nesne örneklerinin metotları kullanılarak her türlü bilginin üretilebilme olanağı bulunabilir.

12.2.3 - Date (Tarih) Nesne Sınıfı Örnekleri Yapılandırıcısının UTC() Metodu

Bu metot verileri UTC zamanı olarak algılar ve geriye 1 Ocak 1970 geceyarısından (UTC) o anki geçerli tarihe (UTC) kadar olan tarih aralığına karşı gelen milisaniye sayısını belirten bir tamsayı değerini geri döndürür. Bu değer, yerel tarihler arası farka eşittir. Yani (yerelSaat2 + UTC) - (yerelSaat1 + UTC) = yerelSaat2 - yerelSaat1 olduğundan üretilecek zaman damgası, yerel saatten parse() metodu ile üretilen zaman damgası ile aynı olacaktır. Bu metot,

Date.UTC(yıl, ay[,gün[,saat[,dakika[,saniye[,ms] ] ] ] ] )
		

şeklinde uygulanır. ilk iki argüman zorunlu diğerleri isteğe bağlıdır. Burada saat değerleri UTC olarak verilecektir. Yani ülkemiz için, saat 07 ise, bu UTC değeri 05 olarak verilecektir.

UTC() metodunun bir uygulaması olan JavaScript programı ve iliştirildiği uygulama sayfasında verdiği sonuç aşağıda görülmektedir:

...
function geriKazanım(td) {
return new Date(td);
}

function tarihBildir() {

var tarih = new Date(1998, 00, 07, 03, 12, 48), td = Date.UTC(1998, 00, 07, 03, 12, 48);

sonuçYaz('new Date (1998, 00, 07, 03, 12, 48) (Yerel Saat) (UTC = 03 - 2 = 01): ' + tarih, 'b12.2.3-uyg-1-sonuç-1');
sonuçYaz('Date.UTC (1998, 00, 07, 01, 12, 48) (UTC)  + td + ' (ms) ', 'b12.2.3-uyg-1-sonuç-2');
sonuçYaz('Geri Kazanılan Tarih (Yerel Saat):  ' + geriKazanım(td), 'b12.2.3-uyg-1-sonuç-3');
}
...
		

Program Sonucu :

12.3 - Date (Tarih) Nesne Sınıfı Örnekleri Prototip Nesnesinin Özellikleri

Tarih nesne sınıfı prototip nesnesinin değeri, değeri NaN olan bir tarih sınıfı nesne örneğidir. Bu nesnenin içsel [Class]] özelliğinin değeri 'Date' olarak belkirlenmiştir. Bu da tarih sınıfının bağımsız bir nesne sınıf olduğunu ortaya koyar. Tarih sınıfının prototip nesnesinin içsel [[Prototype]] özelliğinin değeri, generik nesne sınıfı prototipi (Object.prototype nesnesi) dir. Bu değer, tarih nesne sınfının generik nesne sınıfının bir alt sınıfı olduğunun kanıtıdır ve bundan dolayı, tarih nesne sınıfı örnekleri, generik nesne sınfının tüm değer özellikleri ve metotlarını kalıtımla elde eder.

Tarih nesne sınıfı prototip nesnesinin değer özellikleri ve metotları, herhangibir tarih nesne sınıfını belirten this nesnesine uygulanabilirler. this Nesnesi, bir tarih sınıfı nesne örneği olabileceği gibi, doğrudan doğruya Date.prototype nesnesi de olabilir. Fakat, JavaScript yorumlayıcısının tüm içsel yazılımları gibi, tarih prototip nesnesinin içsel yazılımı da kullanıcıya açık değildir. Bu yüzden tarih prototip nesnesinin kendi özelliklerinin sorgulanması kullanıcıya yaralı bir bilgi vermez. Eğer this nesnesinin sınıfı tarih nesne sınıfı değilse, bir tip hatası (TypeError) istisnası fırlatılır.

12.3.1 - Date (Tarih) Nesne Sınıfı Prototip Nesnesinin constructor Özelliği

Tarih nesne sınıfı prototip nesnesinin tek değer özelliği, constructor özelliğidir. Bu özelliğin değeri, öntanımlı tarih nesne sınıf örnekleri yapılandırıcısı olan Date() fonksiyonudur.

12.3.2 - Date (Tarih) Nesne Sınıfı Prototip Nesnesinin toString() Metodu

Tarih nesne sınıfı prototip nesnesinin toString() metodu, geriye okunabilir, geçerli saat diliminde bir tarih bilgisi içeriği olan, bir ilkel karakter dizigisi verisi (string) döndürür. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var tarih('12/03/1955');

bilgiyiVeTipiniYaz(tarih.toString(), 'b12.3.2-uyg-1-sonuç-1');
...
				

Program Sonucu :

12.3.3 - Date (Tarih) Nesne Sınıfı Prototip Nesnesinin toDateString() Metodu

Tarih nesne sınıfı prototip nesnesinin todateString() metodu, geriye okunabilir saat, dakika saniye ve milisaniye içermeyen bir tarih bilgisi içeriği olan, bir ilkel karakter dizigisi verisi (string) döndürür. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var tarih = new Date(1998, 11, 8, 12, 34, 37, 300);

bilgiyiVeTipiniYaz(tarih.toDateString(), 'b12.3.3-uyg-1-sonuç-1');
...
				

Program Sonucu :

12.3.4 - Date (Tarih) Nesne Sınıfı Prototip Nesnesinin toTimeString() Metodu

Tarih nesne sınıfı prototip nesnesinin todateString() metodu, bir tarih sınıfı nesne örneğinin, saat kısmını içeren, okunabilir bir içeriği olan, bir ilkel karakter dizigisi verisi (string) döndürür. Bu konuda bir JavaScript programı ve bağlantılı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var tarih = new Date(1998, 11, 8, 12, 34, 37, 300);

bilgiyiVeTipiniYaz(tarih.toTimeString(), 'b12.3.4-uyg-1-sonuç-1');
...
				

Program Sonucu :

Valid XHTML 1.1