Takvim tarih ve saatlerini yönetmeFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü ActionScript 3.0'daki tüm takvim tarihi ve saati yönetimi işlevleri, üst düzey Date sınıfında yoğunlaşmıştır. Date sınıfı, Eşitlenmiş Evrensel Saat'te (UTC) veya bir saat dilimine özel yerel saatte tarih ve saatleri işlemenize olanak sağlayan yöntemleri ve özellikleri içerir. UTC, temelde Greenwich Saati (GMT) ile aynı olan standart bir saat tanımıdır. Date nesneleri oluşturmaDate sınıfı, tüm çekirdek sınıfların en çok yönlü yapıcı yöntemlerinden birini sağlar. Dört farklı şekilde bunu çağırabilirsiniz. İlk olarak, herhangi bir parametre verilmediyse, Date() yapıcısı, saat diliminizi esas alarak yerel saatte geçerli tarih ve saati içeren bir Date nesnesini döndürür. Aşağıda buna bir örnek verilmiştir: var now:Date = new Date(); İkinci olarak, tek bir sayısal parametre verildiyse, Date() yapıcısı bunu 1 Ocak 1970'ten bu yana geçen milisaniye sayısı olarak değerlendirir ve karşılık gelen bir Date nesnesini döndürür. İlettiğiniz milisaniye değerinin, UTC'de 1 Ocak 1970'ten bu yana geçen milisaniye sayısı olarak değerlendirildiğini unutmayın. Ancak değerleri almak ve görüntülemek için UTC'ye özel yöntemleri kullanmadığınız sürece Date nesnesi, yerel saat diliminizdeki değerleri gösterir. Tek bir milisaniye parametresi kullanarak yeni bir Date nesnesi oluşturursanız, yerel saatiniz ile UTC arasındaki saat dilimi farkını dikkate aldığınızdan emin olun. Aşağıdaki deyimler, UTC'de 1 Ocak 1970 gününün gece yarısına ayarlanmış bir Date nesnesi oluşturur: var millisecondsPerDay:int = 1000 * 60 * 60 * 24; // gets a Date one day after the start date of 1/1/1970 var startTime:Date = new Date(millisecondsPerDay); Üçüncü olarak, Date() yapıcısına birden çok sayısal parametre iletebilirsiniz. Yapıcı bu parametreleri sırayla yıl, ay, gün, saat, dakika, saniye ve milisaniye olarak değerlendirir ve karşılık gelen Date nesnesini döndürür. Bu girdi parametrelerinin UTC'de değil yerel saatte olduğu varsayılır. Aşağıdaki deyimler, yerel saatte 1 Ocak 2000 başlangıcında gece yarısına ayarlanmış bir Date nesnesi alır: var millenium:Date = new Date(2000, 0, 1, 0, 0, 0, 0); Dördüncü olarak, Date() yapıcısına tek bir dize parametresi iletebilirsiniz. Yapıcı bu dizeyi tarih veya saat bileşenlerine ayrıştırmayı dener ve sonra karşılık gelen bir Date nesnesini döndürür. Bu yaklaşımı kullanırsanız, ayrıştırma hatalarını yakalamak için Date() yapıcısının bir try..catch bloğunun içine alınması iyi bir fikirdir. Date() yapıcı, (Adobe Flash Platformu için ActionScript 3.0 Başvurusu öğesinde listelenen) birkaç farklı dize biçimi kabul eder. Aşağıdaki deyim, bir dize değeri kullanarak yeni bir Date nesnesini başlatır: var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM"); Date() yapıcısı dize parametresini başarıyla ayrıştıramazsa, istisna atmaz. Ancak sonuçta elde edilen Date nesnesi geçersiz bir tarih değeri içerir. Zaman birimi değerlerini almaDate sınıfının özelliklerini veya yöntemlerini kullanarak bir Date nesnesi içindeki çeşitli zaman birimlerinin değerlerini ayıklayabilirsiniz. Aşağıdaki özelliklerin her biri, size Date nesnesindeki bir zaman biriminin değerini verir:
Tarih ve saat aritmetiği yapmaDate sınıfıyla tarih ve saatlerde toplama ve çıkarma işlemleri yapabilirsiniz. Tarih değerleri dahili olarak milisaniye cinsinde saklanır, böylece diğer değerleri Date nesnelerine eklemeden veya Date nesnelerinden çıkarmadan önce milisaniyeye dönüştürmeniz gerekir. Uygulamanız çok sayıda tarih ve saat aritmetiği uygulayacaksa, aşağıdaki gibi, ortak zaman birimi değerlerini milisaniye cinsinde tutan sabitler oluşturulması yararlı olabilir: public static const millisecondsPerMinute:int = 1000 * 60; public static const millisecondsPerHour:int = 1000 * 60 * 60; public static const millisecondsPerDay:int = 1000 * 60 * 60 * 24; Artık standart zaman birimlerini kullanarak tarih aritmetiği yapmak çok kolay. Aşağıdaki kod, getTime() ve setTime() yöntemlerini kullanarak geçerli saatten bir saate bir tarih değeri ayarlar: var oneHourFromNow:Date = new Date(); oneHourFromNow.setTime(oneHourFromNow.getTime() + millisecondsPerHour); Tarih değeri ayarlamanın başka bir yolu, tek bir milisaniye parametresi kullanarak yeni bir Date nesnesi oluşturulmasıdır. Örneğin, aşağıdaki kod, başka bir tarihi hesaplamak için bir tarihe 30 gün ekler: // sets the invoice date to today's date var invoiceDate:Date = new Date(); // adds 30 days to get the due date var dueDate:Date = new Date(invoiceDate.getTime() + (30 * millisecondsPerDay)); Ardından, 30 günlük zamanı temsil etmesi için millisecondsPerDay sabiti 30 ile çarpılır ve sonuç invoiceDate değerine eklenip dueDate değerini ayarlamak için kullanılır. Saat dilimleri arasında dönüştürme yapmaTarih ve saat aritmetiği, tarihleri bir saat diliminden diğerine dönüştürmek istediğinizde kullanışlıdır. Date nesnesinin saat diliminin UTC'den farklı olduğu dakika cinsinden değeri döndüren getTimezoneOffset() yöntemi de aynı işleve sahiptir. Tüm saat dilimleri çift saatlik artışa ayarlanmadığından (bazıları yakın saat dilimlerinden yarım saat farklıdır), dakika cinsinden bir değer döndürür. Aşağıdaki örnek, bir tarihi yerel saatten UTC'ye dönüştürmek için saat dilimi farkını kullanır. İlk olarak saat dilimi değerini milisaniye cinsinden hesaplayıp sonra Date değerini o miktara göre ayarlayarak dönüştürmeyi gerçekleştirir: // creates a Date in local time var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM"); // converts the Date to UTC by adding or subtracting the time zone offset var offsetMilliseconds:Number = nextDay.getTimezoneOffset() * 60 * 1000; nextDay.setTime(nextDay.getTime() + offsetMilliseconds); |
|