(PHP 4, PHP 5, PHP 7)
mktime — Bir tarih için Unix zaman damgasını döndürür
$saat
= date("H")
[, int $dakika
= date("i")
[, int $saniye
= date("s")
[, int $ay
= date("n")
[, int $gün
= date("j")
[, int $yıl
= date("Y")
[, int $ysu_var
= -1
]]]]]]] ) : intVerilen 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
Saat sayısı.
dakika
Dakika sayısı.
saniye
Son dakikanın geçen saniye sayısı.
ay
Ay sayısı.
gün
Gün sayısı.
yıl
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).
ysu_var
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 |
Ö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ı.