İçinde bulunulan yılı almak için PHP'yi nasıl kullanırım?


937

Bir web sitesinin altbilgisine bir telif hakkı bildirimi koymak istiyorum, ancak bence yılın güncelliğini yitirmesi inanılmaz derecede yapışkan. PHP 4 ve PHP 5 ile yıl güncellemesini nasıl otomatik olarak yapabilirim ?


630
echo date("Y");
doub1ejack

2
Bunu kullanarak bir uyarı aldım. Date_default_timezone_set ('UTC') eklendi; uyarı almamak için. ('UTC + 1' işe yaramaz ... PHP ile başlamak kadar çok şey söyleyemez). Muhtemelen uyarıları atmaktan kaçınmak için PHP'yi yapılandırmanın bir yolu vardır (php.ini gibi bazı yapılandırma dosyalarında).
justin

4
@justin Bu, varsayılan saat dilimini ayarlamadığınız ve PHP'nin bundan hoşlanmadığı anlamına gelir. php.iniDosyadaki varsayılan saat dilimini benzer bir şeyle date.timezone = "America/Los_Angeles"veya kodunuzun başlangıcında benzer bir şeyle ayarlayabilirsiniz date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter

7
NOT: Bir telif hakkı bildirimindeki yıl gerçekten fazla yasal değere sahip değildir, ancak genellikle telif hakkının hala geçerli olup olmadığını bilmek isteyen kişilere yardımcı olmak için eklenir. Bu nedenle, çalışmanın yayınlandığı yıl olması gerekiyordu. Sadece şu anki yılı kullanmak gerçekten hiçbir anlam ifade etmiyor ... Ancak sayısız kez yapıldığını gördüm.
Stijn de Witt

7
Şahsen bunun bir web sözleşmesi haline geldiğini iddia ediyorum, bu yüzden teknik olarak doğru olmanıza rağmen, insanların beklediği şey bu değil. Gerçek şu ki, 2007'de yazılan bir makaleyi içeren bir sayfanın altbilgisinde yer alan "Telif Hakkı 2007, tüm hakları saklıdır '' teknik olarak doğru olmasına rağmen, siteyi ziyaret edenlerin sitenin terk edildiğini varsayabilecekleri büyük olasılıktır. avukat ekibi olan şirketler, '2007-2015' olsa bile, bu yıl hala web sayfalarını
Nathan Hornby

Yanıtlar:


1152

Tarih veya strftime kullanabilirsiniz . Bu durumda, yıl ne olursa olsun, bir yıl olduğu önemli değil diyebilirim (yılı farklı biçimlendiren bir yerel ayar yoksa?)

Örneğin:

<?php echo date("Y"); ?>

Bir yan notta, tarihleri ​​PHP'de biçimlendirirken, tarihinizi varsayılandan farklı bir yerel ayarda biçimlendirmek istediğinizde önemlidir. Öyleyse, setlocale ve strftime kullanmanız gerekir. Tarihte php kılavuzuna göre :

Diğer dillerdeki tarihleri ​​biçimlendirmek için, date () yerine setlocale () ve strftime () işlevlerini kullanmalısınız.

Bu açıdan, başvurunuzu yerelleştirmek zorunda kalmamanız durumunda bile, strftime'ı mümkün olduğunca kullanmanın en iyi olacağını düşünüyorum. Bu bir sorun değilse, en sevdiğinizi seçin.


4
@ErikvanBrakel Tayland şu anki ilgi 2556 olduğunu. PHP yerel ayar bunu dikkate alırsa emin değilim ama mükemmel bir dünyada gerekir :)
Dirk Hartzer Waldeck

Sadece şunu söyleyebilirsiniz: tarih ("Y");

Çin ve Japon yıl ftw! Pan 年 / 二千 十六 年
Panzercrisis

3
Bunu Youtube'da yapabilseydim. "<<Php echo date (" Y ");?>"
Luka

Neden kullandım 'y'? : /
Guga Nemsitsveridze

515
<?php echo date("Y"); ?>

32
Ayrıca,<?= date('Y') ?>
Shane Reustle

33
kısa etiketler tüm sunucular tarafından desteklenmemektedir ve bunlar da vardır: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck

5
PHP 5.4'te, yukarıdaki gibi kısa eko etiketlerini özgürce kullanabilirsiniz. Görüşlerinde çok daha güzeller imho.
Jimbo

1
@ShaneReustle, sonunda noktalı virgülleri kaçırdınız;) Bu durumda önemli olmadıklarını biliyorum, ama yeni başlayanlar için iyi bir uygulama :)
Dimitar

204

Otomatik olarak güncellenen bir telif hakkı satırı gösteren süper tembel versiyonum:

&copy; <?php 
$copyYear = 2008; 
$curYear = date('Y'); 
echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
?> Me, Inc.

Bu yıl (2008) şunu söyleyecektir:

© 2008 Mu-Yap

Gelecek yıl şunu söyleyecektir:

© 2008-2009 Me, Inc.

ve sonsuza dek güncel yıl kalmak.


Veya (PHP 5.3.0+), anonim bir işlev kullanarak bunu yapmanın kompakt bir yoludur, böylece değişkenleri dışarıda bırakarak kodu / sabitleri tekrarlamayın:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.

15
Daha kısa (ancak daha az okunabilir) sürüm:&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct

Benim bir satır versiyonu:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000

71

PHP daha nesne yönelimli bir yönde, burada kimse yerleşik DateTimesınıf referans vermedi şaşırdım :

$now = new DateTime();
$year = $now->format("Y");

veya örneklemede sınıf üyesi erişimi olan bir astar (php> = 5.4):

$year = (new DateTime)->format("Y");


28
strftime("%Y");

Saldırıyı seviyorum . Tarih / saat yığınlarını kapmak / yeniden birleştirmek için harika bir işlevdir.

Ayrıca, tarih işlevinin yapmadığı yerel ayarlara uyar.


14

Bu size yerel saati verir:

$year = date('Y'); // 2008

Ve bu UTC :

$year = gmdate('Y'); // 2008


12

İşte yaptığım şey:

<?php echo date("d-m-Y") ?>

Aşağıda ne yaptığına dair biraz açıklama var:

d = day
m = month
Y = year

Y size dört basamak verir (örneğin 1990) ve iki basamak için y örneğin (90)


10

echo date('Y')size cari yıl verir ve date()bize güncel tarihi verdikten sonra bu otomatik olarak güncellenir .



8

sadece çağrılan bir PHP işlevi kullanın date().

Geçerli tarihi alır ve ardından bir biçim sağlarsınız

ve format sadece Y olacak. Capital Y dört basamaklı bir yıl olacak.

<?php echo date("Y"); ?>

8
<?php echo date("Y"); ?>

Bu kod


1
Kısa form etiketlerinden kaçınmaya çalışın, < veya <? = çünkü bu iyi bir uygulama değil. Zend gibi birçok iyi çerçevenin stenografi PHP açılış etiketi bağlantısına izin vermemesine rağmen bahsetmeye değer .
Wael Assaf

7

Sunucunuz Kısa Etiketleri destekliyorsa veya PHP 5.4 kullanıyorsanız şunları kullanabilirsiniz:

<?=date("Y")?>

6
Lütfen, bir daha asla kısa etiketleri tekrar kullanmayın. stackoverflow.com/questions/200640/…
Jelmer

php v5.4.0 - <? = etiketi, short_open_tag ini ayarından bağımsız olarak her zaman kullanılabilir. Şimdi bu sözdizimini kullanabilirsiniz.
nektobit

7

Sadece yaz:

date("Y") // A full numeric representation of a year, 4 digits
          // Examples: 1999 or 2003

Veya:

date("y"); // A two digit representation of a year     Examples: 99 or 03

Ve bu değeri 'yankı' ...


5

Basit PHP tarih sınıfını kullanabilirsiniz. Birçok yararlı yöntem ve işlev sağlar:

$date = new simpleDate();
echo $date->now()->getYear(); 
echo $date->now()->getMonth();
echo $date->set('2013-01-21')->getDayString();
echo $date->now()->compare('2013-01-21')->isBefore();
...

Daha fazla örnek için kütüphane öğreticileri sayfasını kontrol edebilirsiniz.


5

BTW ... site telif hakkını göstermenin birkaç uygun yolu vardır. Bazı insanlar işleri gereksiz hale getirme eğilimindedir, yani: Telif hakkı © her ikisinin de aynı anlamı vardır. Önemli telif hakkı bölümleri:

**Symbol, Year, Author/Owner and Rights statement.** 

PHP + HTML kullanma:

<p id='copyright'>&copy; <?php echo date("Y"); ?> Company Name All Rights Reserved</p>

veya

<p id='copyright'>&copy; <?php echo "2010-".date("Y"); ?> Company Name All Rights Reserved</p

5

Php 5.4+ sürümüne kadar

<?php
    $current= new \DateTime();
    $future = new \DateTime('+ 1 years');

    echo $current->format('Y'); 
    //For 4 digit ('Y') for 2 digit ('y')
?>

Veya tek satırla kullanabilirsiniz

$year = (new DateTime)->format("Y");

Yılı artırmak veya azaltmak istiyorsanız başka bir yöntem; aşağıdaki gibi değişiklik satırı ekleyin.

<?PHP 
  $now   = new DateTime;
  $now->modify('-1 years'); //or +1 or +5 years 
  echo $now->format('Y');
  //and here again For 4 digit ('Y') for 2 digit ('y')
?>

5

PHP date()işlevi kullanır.

ve format sadece Y olacak. Capital Y dört basamaklı bir yıl olacak.

<?php echo date("Y"); ?>


3

Tam Yılı kullan:

 <?php 
    echo $curr_year = date('Y'); // it will display full year ex. 2017
?>

Ya da yılın sadece iki rakamını şu şekilde kullanın:

 <?php 
    echo $curr_year = date('y'); // it will display short 2 digit year ex. 17
?>

3

Telif hakkını göstermenin yolu, Bu otomatik olarak güncellenmeye devam ediyor

<p class="text-muted credit">Copyright &copy;
    <?php
        $copyYear = 2017; // Set your website start date
        $curYear = date('Y'); // Keeps the second year updated
        echo $copyYear . (($copyYear != $curYear) ? '-' . $curYear : '');
    ?> 
</p>    

Sonuçları şu şekilde çıktılar:

copyright @ 2017   //if $copyYear is 2017 
copyright @ 2017-201x    //if $copyYear is not equal to Current Year.

2
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

Dinamik telif hakkı yılı elde etmek için bunu altbilgi bölümlerinde kullanabilirsiniz



-1
<?php
$time_now=mktime(date('h')+5,date('i')+30,date('s'));
$dateTime = date('d_m_Y   h:i:s A',$time_now);

echo $dateTime;
?>

1
İstedikleri bu değil ya da açıklanmış bir cevap.
Elliot A.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.