php içinde geçerli tarihi alma. Php tarih - tarih DateTime mktime ve diğerleri ile çalışır ...

  • 18.06.2019

Çeşitli programlama görevleri arasında tarih ve saat değerlerine sahip çeşitli manipülasyonlar oldukça yaygındır. Nadir bir otomatik sistem, bir veritabanı, belirli bir sürecin zamanı hakkında bilgi depolamadan yapabilir. Bir veritabanı kaydına basit bir tarih ekleme veya bu tarihi görüntülemenin yanı sıra, bu tarihleri ​​çeşitli şekillerde görüntüleme, mevcut saatin belirli bir zamanlayıcıyla eşleşip eşleşmediğini kontrol etme, iki tarih arasındaki süreyi hesaplama ve çok daha fazlası gibi birçok görev vardır. .

Tarihlerle çalışmanın rahatlığı için, her programlama dilinin tarih ve saat değerlerini saklamak için kendi özel veri türleri vardır. Çoğu zaman bu, bir tamsayı veya kayan nokta değeri olan sayısal bir değerdir.

PHP'de tarihlerle çalışmak en sık UNIX TIMESTAMP ile karşılaşır. Burada zaman bir tamsayı olarak saklanır. Zamanın hesaplanması 1 Ocak 1970'de başlar. Bu nedenle, örneğin, 12/11/2014 7:40:00 PM tarih ve saati 1418316000 sayısı ile temsil edilecektir. Bu şekil, Unix Epoch olarak adlandırılan 1 Ocak 1970 sıfır tarihinden bu yana kaç saniye geçtiğini gösterir. .

Veri dönüştürme yetenekleri sağlayan bir php sayfası örneği, sitede "Tarih ve saat biçimi dönüştürme" programı tarafından programlar bölümünde sunulmaktadır. Burada istediğiniz tarihi UNIX TIMESTAMP formatında oluşturabilir ve bu formatı standart, insan tarafından okunabilir bir forma getirebilirsiniz.

PHP'de geçerli saat ve tarihi alma

Geçerli sunucu saatini almak için işlevi kullanın

int zaman(void)

bu sadece değeri unix zaman damgası biçiminde döndürür.

ekozaman(); // geçerli saati unix zaman damgası biçiminde göster

İlk bakışta, bu bir kişi için çok uygun bir format değildir, ancak bildiğiniz gibi, veri gösterimi ne kadar basit olursa, bu değerlerin bir bilgisayar tarafından işlenmesi o kadar hızlı olur. Ayrıca, bir sayıyı bir veritabanında saklamak, herhangi bir özel formattan çok daha ekonomiktir. Ayrıca PHP zaman içinde hem Unix hem de Windows platformlarında aynı şekilde çalışır, bu da kodun bu platformlardan herhangi birinde kullanılmasını mümkün kılar.

PHP tarih saat biçimi dönüştürme

Sayısal bir tarih değerini daha okunabilir değerlere dönüştürmek için en basit mekanizma, işlev tarafından sağlanır:

dizi getdate()

Tarih bilgisini içeren bir ilişkisel dizi döndürür. Zaman damgası parametresi belirtilmezse, geçerli zaman bilgisi döndürülür. Bu dizi aşağıdaki değerleri içerir:

Ortaya çıkan dizi, değerleri istenen biçimde görüntülemenizi sağlar:

$tarih = 1418372345;
$date_mas = getdate($tarih);
echo $tarih_mas["gün"] . ". " $date_mas["mon" ] . ". " $tarih_mas["yıl"]; // 12.12.2014


Bu işlevi tarih ve saat biçimini dönüştürmek için de kullanabilirsiniz:

string tarih(string $şablon [, int $unix_timestamp])

Geçerli tarih unix zaman damgasını istenen biçimde almak için tasarlanmıştır. $template string parametresi çıktı formatını belirtir. $unix_timestamp parametresi ile hangi zaman değeriyle çalışılacağını belirleyebilirsiniz. İsteğe bağlıdır, bu nedenle belirtmezseniz geçerli tarih ve saat kullanılacaktır.

Biçim aşağıdaki değerlerle verilir:

aöğlen "öncesi" ve "sonrası": "öğleden önce" veya "öğleden sonra"
Abüyük harflerle öğleden önce "önce" ve "öğleden sonra": "ÖÖ" veya "ÖS"
d2 basamaklı ayın günü (10'dan küçükse, önce sıfır) (01 ila 31)
D3 harfle haftanın günü. Örneğin, "Pzt" (Pazartesi)
jayın günü, başında sıfır olmadan 1-2 basamak (1'den 31'e kadar)
Fayın adı. Örneğin, "Ocak"
hsaat, 12 saat formatı (01 - 12)
Hsaat, 24 saat formatı (00 - 23)
gsaat, sıfır olmadan 12 saat biçimi (1'den 12'ye kadar)
Gsaat, sıfır olmadan 24 saat biçimi (0 - 23)
idakika (00 - 59)
ben (büyük harf i)1 gün ışığından yararlanma saati etkinse 0, aksi takdirde 0
LYıl artık yıl ise 1 veya artık yıl değilse 0
Bİnternet Saati (Alternatif Günün Saati) formatında saat (000 ila 999)
Tbilgisayarın saat dilimi. Örneğin, MDT
l (küçük harf L)haftanın günü. Örneğin, "Pazartesi"
may, sıfırlı iki basamak (01 - 12)
nay, sıfırsız bir veya iki basamak (1'den 12'ye kadar)
Mayın kısaltılmış adı. Örneğin, "Ocak"
tbelirtilen aydaki gün sayısı (28'den 31'e kadar)
ssaniye (0 ila 59)
Siki harfli İngilizce sıra eki ("st", "nd", "rd" veya "th")
senUNIX çağının başlangıcından bu yana geçen tam sayı saniye sayısı
yyıl, dijital, 2 basamak (14)
Yyıl, dijital, 4 basamak (2014)
zyıldaki günün sıra sayısı (0'dan 365'e kadar)
Zsaniye cinsinden saat dilimi farkı (-43200 - 43200)
NISO-8601 standardına göre 1'den (Pazartesi) 7'ye (Pazar) kadar haftanın gününün sıra sayısı, (PHP 5.1.0'da eklendi)
w0 (Pazar) ile 6 (Cumartesi) arasında haftanın gününün sıra sayısı
WISO-8601 standardına göre yılın haftasının seri numarası; haftalar Pazartesi günü başlar (PHP 4.1.0'da eklenmiştir)
ÖISO-8601 standardına göre yıl numarası. ISO hafta numarasının (W) önceki veya sonraki yıla ait olması dışında Y ile aynı anlama sahiptir; o zaman o haftanın yılı kullanılacaktır. (PHP 5.1.0'da eklendi)
esaat dilimi kodu. Örneğin: UTC, GMT, Atlantik/Azorlar (PHP 5.1.0'da eklendi)
ÖGreenwich Ortalama Saati'nden saat cinsinden farkı. Örneğin: +0200
PGreenwich Ortalama Saatinden saat ve dakika arasında iki nokta üst üste ile fark. Örneğin: +02:00 (PHP 5.1.3'te eklendi)
cISO 8601 biçiminde tarih. Örneğin, 2014-12-12T15:19:21+00:00 (PHP 5'te eklendi)
r» RFC 2822 biçiminde tarih. Örneğin: Per, 21 Aralık 2000 16:01:07 +0200
senUnix Epoch'un başlangıcından bu yana geçen saniye sayısı (The Unix Epoch, 1 Ocak 1970 00:00:00 GMT)

Listeden de görebileceğiniz gibi, bu fonksiyon ile birçok faydalı tarih verisi elde edebilirsiniz. Örneğin:

$tarih = 1418372345; // orijinal tarih ve saat 12/12/2014 11:19:05

echo tarih ("d.m.Y" , $tarih); // 12/12/2014 (tarih)
echo tarih("H:i:s", $tarih); // 11:19:05 (zaman)
echo tarih("H:i", $tarih); // 11:19 (zaman)
echo tarih("t", $tarih); // 31 (bir aydaki gün sayısı)
echo tarih("z", $tarih); // 345 (yıl içinde günün seri numarası)
echo date("l dS \of F Y h:i:s A" , $tarih); // 12 Aralık 2014 Cuma 11:19:05

Desene dahil olan diğer karakterler, dizede olduğu gibi görüntülenecektir. İşlevde biçim kodu olarak kullanılan bir karakter girmeniz gerekiyorsa, bunların önüne bir "\" karakteri eklenir. "\n" (yeni satır karakteri) değeri için "\\n" belirtilmelidir. Böylece, tarih ve saat bilgilerini içeren tüm bir mesajın çıktısını alabilirsiniz:

yankı tarihi( "Bugün Y. yılın z. günü", $tarih); // Bugün 2014'ün 345. günü

Tarih ve saati zaman damgası biçimine dönüştürün

Bir tarihi standart biçimden sayısal bir zaman damgası değerine dönüştürmek için şu işlevi kullanın:

int mktime(]]]]]])

mktime() işlevi, bağımsız değişkenler tarafından verilen tarih ve saate karşılık gelen bir Unix zaman değeri döndürür. Örneğin:

$my_date = mktime(10, 30, 0, 12, 12, 2014);

İşlev argümanlarının sırasına dikkat etmelisiniz: saat, dakika, saniye, ay, gün, yıl.

Bir zaman damgasında basitçe bir tarih değeri oluşturmaya ek olarak, mktime() işlevi, tarihlerle aritmetik yapmak için kullanılabilir. Bunu yapmak için gerekli argümanları girmeniz yeterlidir. Örneğin, 14. ayı belirtirseniz, son değerde ay 2. olur ve yılın değeri bir artar:

$my_day = 12;
$ay_ay = 12;
$my_year = 2014;

$yeni_tarih = mktime(0, 0, 0, $my_ay + 5, $my_day, $my_year);

echo tarih ("d.m.Y" , $yeni_tarih); // 05/12/2015 (tarih)

Aynı şeyi diğer parametrelerle de yapabilirsiniz.

PHP'de Tarihi Doğrula

Tarihlerle çalışırken, özellikle yukarıda önerilen mktime() işlevini kullanarak bir tarih oluştururken, girilen tarihin doğruluğunu dikkate almak gerekir. Bunu yapmak için PHP aşağıdaki işlevi kullanır:

bool checkdate(int ay, int gün, int yıl)

Bağımsız değişkenler tarafından verilen tarih doğruysa true değerini döndürür; aksi takdirde false döndürür. Aşağıdaki durumlarda tarih doğru kabul edilir:

1 ila 32767 aralığında yıl;

1'den 12'ye kadar olan aralıkta ay;

Artık yıl dikkate alınarak verilen ayın günü doğrudur.

Tarih doğrulama örneği:

$my_day = 32;
$ay_ay = 12;
$my_year = 2014;

if (!checkdate($my_ay, $my_day, $my_year))
Eko "Hata: Geçersiz tarih";

JavaScript tarayıcınızda engellendi. Bu sitenin çalışması için JavaScript'e izin verin!

Tarih ve saat gösterimi

İnternet gibi dağıtık sistemlerde zaman çok önemlidir. Sistem saatindeki küçük bir tutarsızlık nedeniyle, bir Forex oyuncusu birkaç dakika içinde on binlerce dolar kaybedebilir; iş zekası sistemi tahmin yaparken hata yapacak; NNTP sunucuları, senkronizasyon işlemi vb. sırasında kullanıcının ihtiyaç duyduğu önemli bilgileri kaybedecektir.

PHP, tarih ve saatlerle çalışmak için birçok işlev içerir. En çok kullanılanlar:

  • zaman()- geçerli mutlak zamanı döndürür. Bu sayı, 1 Ocak 1970 gece yarısından (UNIX çağının başlangıcından beri) geçen saniye sayısına eşittir.
  • getdate()- tarih ve saat bilgilerini okur. Belirtilen zaman veya geçerli (varsayılan) zaman için bilgi içeren bir ilişkisel dizi döndürür. Dizi aşağıdaki öğeleri içerir:

    örnek 1

    getdate()'i kullanma $val) echo "$anahtar = $val
    "; Eko "
    Bugün: $d.$d.$d"; ?>

    ÖRNEK 1 SONUÇ:

    Saniye = 21 dakika = 4 saat = 12 gün = 10 gün = 4 pazartesi = 11 yıl = 2005 ygün = 313 hafta içi = Perşembe ayı = Kasım 0 = 1131613461 Bugün: 11/10/2005

  • tarih()- tarih ve saat biçimlendirme. Argümanlar: dizeyi ve mutlak zamanı biçimlendirin. İkinci argüman isteğe bağlıdır. Belirtilen biçimde verilen veya geçerli tarihe sahip bir dize döndürür. Biçim dizesi aşağıdaki kodları içerebilir:
    a
    A"AM" veya "PM" tanımı dahildir
    dAyın günü (01-31)
    DHaftanın gününün kısaltılmış adı (üç harfli)
    FTam ay adı
    gSaatler (sıfırlar olmadan 12 saatlik biçim)
    GSaatler (24 saatlik biçim, başında sıfırlar olmadan)
    hSaat (12 saat formatı)
    HSaat (24 saat formatı)
    iDakika (00-59)
    jBaşında sıfır olmadan ayın günü (1-31)
    benHaftanın gününün tam adı
    LArtık yıl bayrağı (0 veya 1)
    mAy (01-12)
    MAyın kısaltılmış adı (üç harfli)
    nAy (1-12)
    sSaniye (00-59)
    tBelirli bir aydaki gün sayısı (28'den 31'e kadar)
    senmutlak zaman
    w
    yYıl (iki basamaklı)
    YYıl (dört basamaklı)
    zYılın günü (0-365)
    ZSaniye cinsinden saat dilimi farkı (-43200 - 43200)

    Biçim dizesinde yer alan diğer bilgiler, döndürülen dizeye eklenecektir. Kendileri biçim kodları olan karakterler, biçim dizesine eklenecekse, bu karakterlerin önüne bir ters eğik çizgi "\" gelmelidir. Bir ters eğik çizgi ile eklendiğinde biçim kodu haline gelen karakterlerin önüne iki eğik çizgi gelmelidir. Örneğin, bir dizgeye "n" eklemek istiyorsanız, "\\n" yazarsınız çünkü "\n" yeni satır karakteridir.

    Örnek 2

    tarih() kullanma

    ÖRNEK 2 SONUÇ:

    Bugün: 10.11.05 13:03

  • mktime()- daha sonra date() veya getdate() işlevleriyle kullanılabilen mutlak zamanı döndürür. Aşağıdaki sırayla en fazla altı tamsayı bağımsız değişkeni alır:

    İzlemek
    dakika
    saniye
    ay
    ayın günü
    yıl

    Örnek 3

    mktime() kullanma

    ÖRNEK 3 SONUÇ:

  • kontrol tarihi()- tarihin doğruluğunu kontrol etmek. Argümanlar: ay, gün, yıl. Tarih geçerliyse true döndürür, ör.
    ay - 1'den 12'ye kadar bir tam sayı;
    gün - verilen aydaki toplam gün sayısını aşmayan bir tam sayı. Aynı zamanda artık yıllar doğru işlenir;
    yıl 1 ile 32767 arasında bir tamsayıdır.

    Örneğin:

    If (!checkdate($ay, 1, $yıl)) ( $d = getdate(); $ay = $d; $yıl = $d; )

    Dikkat! Tarih, geçerli aralıkta olabilir, ancak diğer tarih işlevleri bu değeri kabul etmeyecektir. Bu nedenle, mktime()'ı 1902'den önceki yıllar için kullanamazsınız, 1970'den önceki yıllar için de dikkatli kullanmalısınız.

  • strftime()- yerel tarih ve saatin oluşumu. Argümanlar: dizeyi ve mutlak zamanı biçimlendirin. İkinci argüman isteğe bağlıdır. Belirtilen biçimde verilen veya geçerli tarihe sahip bir dize döndürür. Bu durumda, işlev kullanılarak seçilen yerel ayardan ayların ve günlerin adları çıkarılır.Biçim dizesi aşağıdaki kodları içerebilir:
    %aHaftanın gününün kısaltması
    %AHaftanın gününün tam adı
    %bKısaltılmış ay adı
    %BTam ay adı
    %cTercih edilen tarih ve saat biçimi
    %Cyüzyıl numarası
    %dAyın günü (1-31)
    %Dİle aynı %m/%d/%y
    %eAy (1-12)
    %hİle aynı %b
    %HSaat (24 saat formatı)
    %BENSaat (12 saat formatı)
    %jYılın günü (0-365)
    %mAy (1-12)
    %Mdakika
    %nYeni satır karakteri
    %p"am" veya "pm" sembolü dahildir
    %ra.m./p.m. gösterimini kullanan zaman
    %R24 saat formatında zaman
    %SSaniye (00-59)
    %tSekme karakteri
    %Tİle aynı %H:%M:%S
    %uHaftanın gün sayısı (1 - Pazartesi, 7 - Pazar)
    %UHafta numarası. Geri sayım yılın ilk Pazar günü başlıyor
    %VISO 8601:1988'e göre hafta numarası. İlk hafta en az dört gün olmalıdır ve Pazartesi ilk gün olarak kabul edilir.
    %WHafta numarası. Geri sayım yılın ilk Pazartesi günü başlıyor
    %wHaftanın gün sayısı (0 - Pazar, 6 - Cumartesi)
    %xSaatsiz tercih edilen tarih formatı
    %XTarihsiz tercih edilen saat biçimi
    %yYıl (iki basamaklı)
    %YYıl (dört basamaklı)
    %ZSaat dilimi (ad veya kısaltma)
    %% "%" sembolü

    Biçim dizesinde yer alan diğer bilgiler, döndürülen dizeye eklenecektir.

Açıkçası, çoğu zaman programcıların tarih ve saat ile çalışmak. En basit örnek, bir mesajın bir foruma gönderildiği tarih ve saattir. Ve elbette, bu tür şeyler gerçekleştirilebilir PHP, özellikle fırsatlar nedeniyle PHP'de tarih ve saat ile çalışma bir çok.

ile ilişkili temel işlev PHP'de tarih ve saat, - bu zaman() işlevi, bu yana geçen saniye sayısını döndürür 01/01/1970 gece yarısı(bir çağın doğuşu Unix):

ekozaman();
?>

Bu betiği çalıştırarak, o zamandan beri kaç saniye geçtiğini öğreneceksiniz. 01/01/1970 gece yarısı aramaya kadar zaman() işlevleri komut dosyanızda.

Elbette tüm programlama dillerinde bulunan bu temel fonksiyona ek olarak tarih ve saat ile çalışmak(en azından benim bildiklerim arasında), adı verilen başka bir işlev daha var. getdate():

$tarihsaati=gettarih();
foreach ($datetime as $k=>$v)
yankı "$k - $v
";
?>

Bu betiği çalıştırarak, dizide bir dizi anahtar ve bunlara karşılık gelen değerleri göreceksiniz (aynı zamanda inşaatı tekrarladık) her biri için). Artık bununla ilgili herhangi bir veri bulmanızın zor olmayacağını düşünüyorum. tarih ve saat. Örneğin, geçerli saati görüntülemek için aşağıdaki kodu yazarsınız:

$tarihsaati=gettarih();
echo $tarihsaat["saat"].":".$tarihsaat["dakika"].":".$tarihsaat["saniye"];
?>

Ayrıca getdate() işlevleri beri geçen saniye sayısı anlamına gelen isteğe bağlı bir parametre vardır. 01/01/1970 gece yarısı. Bu işlevin yalnızca geçerli saati ve tarihi değil, genel olarak konuşursak, herhangi birini döndürebilmesi için yapılmıştır:

$tarihsaat = getdate(152353232);
echo $tarihsaat["yıl"];
?>

Sonuç olarak, göreceksin 1974 yıl.

Ayrıca var tarih() işlevi. Bu işlev, tarih çıktı biçimini ayarlayan çok karmaşık bir parametre aldığından, referanstaki açıklamasına bakmanızı öneririm. 30'dan biraz fazla biçimlendirme öğesi var. Ve aşağıdaki örnekte, bunlardan birkaçını vereceğim ve geri kalanına referans kitabında bakacağım, çünkü onları ezberlemenize gerek yok, ancak bunlara aşina olmanız oldukça arzu edilir. Ve kullanım ilkelerini bilmek zorunludur ve aşağıdaki örnek bununla ilgilidir:

echo date("Bugün d.m.Y H:i:s");
?>

Sonuç olarak, şöyle bir şey göreceksiniz: Bugün 11/15/2010 21:44:24". Ayrıca tarih() işlevleri belirten ikinci bir isteğe bağlı parametre de vardır. zaman damgası, sadece o zamandan beri geçen saniye sayısına eşit değer 01/01/1970 gece yarısı. İkinci parametreyi kullanmaya bir örnek:

echo date("Bir zamanlar d.m.Y H:i:s", 5393235329);
?>

Ayrıca var gmdate() işlevi tam bir analog olan tarih() işlevleri, ancak gmdate() işlevi zamanı betiğin çalıştığı sunucunun saat dilimine göre değil, saat dilimine göre gösterir. Greenwich. Açıkçası, bu işlevle, kullanıcının gördüğü tarih ve saatle ilgili tüm bilgileri kaydetmeniz ve çıktı alırken her kullanıcının saat dilimine uyum sağlamanız gerekir (ideal olarak elbette):

echo gmdate("Şimdi Greenwich'te D M j H:i:s T Y")
?>

Sonuç olarak, şöyle bir şey göreceksiniz: 15 Kasım Pzt 18:52:45 GMT 2010". Elbette, farklı bir tarih görüntülenecek, ancak benzer bir formatta olacak. Ayrıca dizine girmenizi ve yalnızca diğer tarih ve saat öğelerini tanımanızı şiddetle tavsiye ederim. PHP(sadece üçte birini verdim), çünkü tarih() ve gmdate() işlevleri en kolay ve en hızlı yoldur tarih ve saati al hemen hemen her formatta.