(PHP 4, PHP 5)
mktime — Bir tarih için Unix zaman damgasını döndürür
Verilen değiştirge düzenine göre Unix zaman damgasını döndürür. Bu zaman damgası, Unix Zaman Başlangıcı (1 Ocak 1970 00:00:00 GMT) ile belirtilen zaman arasında geçen süreyi uzun tamsayı türünde saniye olarak belirtir.
Değiştirgeler sağdan sola sıralıdır; böylece belirtilmeyen bir değiştirge yerine yerel tarih ve zamana göre geçerli değerin kullanılması sağlanmıştır.
Bilginize:
PHP 5.1'den itibaren, mktime() değiştirgesiz çağrıldığına bir E_STRICT uyarısı çıktılamaktadır. Böyle durumlarda time() işlevini kullanmalısınız.
Saat sayısı.
Dakika sayısı.
Son dakikanın geçen saniye sayısı.
Ay sayısı.
Gün sayısı.
Yıl sayısı, iki ya da dört hane olabilir. 0-69 değerleri arasında olanlar 2000-2069 ile ve 70-100 arasındaki değerler ise 1970-2000 yıllarıyla eşleşir. Sistemlerdeki time_t türü 32 bit işaretli tamsayı türüyle belirtilmiştir ve günümüzde çok kullanılmaktadır. yıl değiştirgesi için geçerli aralık 1901 ve 2038 arasındadır. Bununla birlikte, PHP 5.1.0 sürümünden önce bu aralık bazı sistemlerde 1970 ve 2038 arasında sınırlıydı (ör. Windows).
Bu değiştirge, yaz saati uygulaması varsa 1'e yoksa 0'a ya da yaz saati uygulması olup olmadığının bilinmediği durumlarda varsayılan değere yani -1'e ayarlanmalıdır. Bilinmeyen durumlarda PHP bunu çözümleyecektir. Bu beklenmeyen sonuçlara (fakat yanlış olmayan) neden olur. Bazı zamanlarda, PHP çalışırken YSU etkinleştirildiğinde ya da ysu_var değiştirgesi 1'e ayarlandığında zaman geçersiz olur. Örneğin, eğer saat 2:00'de YSU etkinleştirilirse, 2:00 ve 3:00 arasındaki tüm zaman geçersiz olacak ve mktime() işlevi anlamsız (genellikle negatif) bir değerle dönecektir. Bazı sistemlerde (ör. Solaris 8) YSU gece yarısında etkinleşir. YSU etkinleştiğinde saat 0:30 ise, saat bir önceki günün 23:30'u olarak değerlendirilecektir.
Bilginize:
PHP 5.1.0 sürümünden beri, bu değiştirgenin kullanılması önerilmemektedir. Sonuç olarak, yerine yeni zaman dilimi özellikleri kullanılmalıdır.
mktime() işlevi verilen değiştirgelerden elde edilen Unix zaman damgası döndürür. Eğer değiştirge geçersiz ise işlev FALSE değeriyle döner (PHP 5.1 sürümünden önce -1 dönerdi).
Bir tarih/zaman işlevine yapılan her çağrı eğer zaman dilimi ayarı geçerli değilse bir E_NOTICE üretir. Ve/veya eğer sistem ayarları veya TZ ortam değişkeni kullanılıyorsa bir E_STRICT veya bir E_WARNING iletisi üretir. Ayrıca bakınız: date_default_timezone_set()
Sürüm: | Açıklama |
---|---|
5.3.0 | Artık mktime() işlevi, ysu_var değiştirgesi kullanılırsa E_DEPRECATED uyarısı vermektedir. |
5.1.0 | ysu_var değiştirgesinin kullanımı artık önerilmemektedir. İşlev hata durumunda -1 yerine, FALSE değeri döndürür olmuştur. İşlev, yıl, ay ve gün değiştirgelerinde sıfır kabul edecek şekilde düzeltilmiştir. |
5.1.0 | mktime() değiştirgesiz çağrıldığına bir E_STRICT uyarısı çıktılamaktadır. Böyle durumlarda time() işlevini kullanmalısınız. |
5.1.0 |
Zaman dilimi hatalarında artık E_STRICT ve E_NOTICE çıktılanıyor. |
Örnek 1 - Basit bir mktime() örneği
<?php
// Öntanımlı zaman dilimini belirtelim. PHP 5.1'den beri kullanılabiliyor.
date_default_timezone_set('UTC');
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
// Çıktısı: July 1, 2000 is on a Saturday
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
// Şöyle bir şey basar: 2006-04-05T01:02:03+00:00
?>
Örnek 2 - mktime() örneği
mktime() işlevi tarih hesaplamaları ve geçerlilik denetimi için kullanışlıdır. Aralık dışına çıkan değerleri (ayın 32'si gibi) özdevinimli olarak doğru hesaplar. Örneğin, aşağıdaki satırların üreteceği dizge "Jan-01-1998" olacaktır.
<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1997));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1998));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 98));
?>
Örnek 3 - Gelecek ayın son günü
Verilen herhangi bir ayın son günü, gelecek ayın -1'inci değil 0'ıncı günü olarak ifade edilebilir. Aşağıdaki iki örnek de "2000 Şubat'ının son günü: 29" dizgesi üretilecektir.
<?php
$songün = mktime(0, 0, 0, 3, 0, 2000);
echo strftime("2000 Şubat'ının son günü: %d", $songün);
$songün = mktime(0, 0, 0, 4, -31, 2000);
echo strftime("2000 Şubat'ının son günü: %d", $songün);
?>
PHP 5.1.0 sürümünden önce, negatif zaman damgaları bilinen Windows sürümleri altında ve diğer benzer sistemlerde desteklemiyordu. Bundan dolayı, geçerli yılların aralığı 1970 ile 2038 arasında sınırlıydı.