Takvim tarih ve saatlerini yönetme

Flash 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şturma

Date 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 alma

Date 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:

  • fullYear özelliği

  • Ocak için 0 ile başlayıp Aralık için 11 olacak şekilde sayısal biçimde olan month özelliği

  • 1 ile 31 aralığında, ayın gününü ifade eden takvim numarası olan date özelliği

  • Pazar için 0 olmak üzere sayısal biçimde haftanın günü olan day özelliği

  • 0 ile 23 aralığı içinde hours özelliği

  • minutes özelliği

  • seconds özelliği

  • milliseconds özelliği

    Aslına bakılırsa, Date sınıfı bu değerlerin her birinin alınması için size birçok yol sağlar. Örneğin, Date nesnesinin ay değerini dört farklı şekilde alabilirsiniz:

  • month özelliği

  • getMonth() yöntemi

  • monthUTC özelliği

  • getMonthUTC() yöntemi

    Bu dört yol da verimlilik açısından eşdeğerdir, böylece uygulamanıza en iyi şekilde uyan yaklaşımı kullanabilirsiniz.

    Listelenen özelliklerin tümü, toplam tarih değerinin bileşenlerini temsil eder. Örneğin, milisaniye değeri 1000'e ulaştığında saniye değeri 1 artıp milliseconds özelliği 0 değerine getirildiğinden, milisaniye değeri asla 999'dan büyük olmaz.

    Date nesnesinin değerini, 1 Ocak 1970 (UTC) tarihinden bu yana geçen milisaniye sayısı olarak almak isterseniz, getTime() yöntemini kullanabilirsiniz. Bunun karşılığı olan setTime() yöntemi, 1 Ocak 1970'ten (UTC) bu yana geçen milisaniye sayısını kullanarak varolan bir Date nesnesinin değerini değiştirmenize olanak sağlar.

Tarih ve saat aritmetiği yapma

Date 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.

Adobe'nin önerdikleri

2 - 1 = 2 in math operations with dates in ActionScript (ActionScript'te tarihli matematik işlemlerinde 2 - 1 = 2)

JabbyPanda

Saat dilimleri arasında dönüştürme yapma

Tarih 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);