Bagaimana cara menggunakan PHP untuk mendapatkan tahun ini?

937

Saya ingin menaruh pemberitahuan hak cipta di bagian bawah sebuah situs web, tapi saya pikir itu sangat sulit untuk tahun ini menjadi ketinggalan zaman. Bagaimana saya membuat pembaruan tahun ini secara otomatis dengan PHP 4 dan PHP 5 ?

JD Graffam
sumber
630
echo date("Y");
doub1ejack
2
Saya mendapat peringatan menggunakan itu. Menambahkan date_default_timezone_set ('UTC'); untuk menghindari mendapat peringatan. ('UTC + 1' tidak berfungsi ... tidak bisa memberi tahu Anda banyak karena hanya memulai dengan PHP). Mungkin ada beberapa cara untuk mengkonfigurasi PHP untuk menghindari melemparkan peringatan (dalam beberapa file konfigurasi seperti php.ini).
justin
4
@justin Ini berarti Anda belum menetapkan zona waktu default dan PHP tidak menyukainya. Anda dapat mengatur zona waktu default dalam php.inifile dengan sesuatu seperti date.timezone = "America/Los_Angeles"atau Anda dapat mengaturnya di awal kode Anda dengan sesuatu seperti date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter
7
CATATAN: Tahun dalam pemberitahuan hak cipta tidak benar-benar memiliki banyak nilai hukum, tetapi biasanya ditambahkan untuk membantu orang yang ingin tahu apakah hak cipta masih berlaku. Karena itu seharusnya menjadi tahun karya itu diterbitkan. Hanya menggunakan tahun ini benar-benar tidak masuk akal ... Namun saya telah melihat itu dilakukan berkali-kali.
Stijn de Witt
7
Saya pribadi berpendapat bahwa ini sudah menjadi konvensi web, jadi meskipun secara teknis Anda benar, itu bukan yang diharapkan orang. Faktanya tetap bahwa meskipun memiliki, yaitu "Hak Cipta 2007, semua hak dilindungi undang-undang yang terpampang di bagian bawah halaman yang berisi artikel yang ditulis pada tahun 2007 secara teknis benar, pengunjung situs cenderung menganggap bahwa situs tersebut telah ditinggalkan. Bahkan besar korporasi dengan tim pengacara masih memberi cap pada halaman web mereka dengan tahun ini, bahkan jika itu adalah '2007-2015'
Nathan Hornby

Jawaban:

1152

Anda dapat menggunakan tanggal atau strftime . Dalam hal ini saya akan mengatakan itu tidak masalah karena tahun adalah tahun, tidak peduli apa (kecuali ada lokal yang memformat tahun secara berbeda?)

Sebagai contoh:

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

Di samping catatan, ketika memformat tanggal dalam PHP itu penting ketika Anda ingin memformat tanggal Anda di lokal yang berbeda dari default Anda. Jika demikian, Anda harus menggunakan setlocale dan strftime. Menurut manual php pada tanggal:

Untuk memformat tanggal dalam bahasa lain, Anda harus menggunakan fungsi setlocale () dan strftime () alih-alih tanggal ().

Dari sudut pandang ini, saya pikir akan lebih baik menggunakan strftime sebanyak mungkin, jika Anda bahkan memiliki kemungkinan jauh untuk melokalisasi aplikasi Anda. Jika itu bukan masalah, pilih yang paling Anda sukai.

Erik van Brakel
sumber
4
@ErikvanBrakel yang hanya tidak menarik tahun ini di thailand adalah 2556. tidak yakin apakah PHP lokal memperhitungkan hal ini tetapi di dunia yang sempurna seharusnya :)
Dirk Hartzer Waldeck
Anda bisa mengatakan: date ("Y");
Tahun-tahun Cina dan Jepang! 2016 年 / 二千 十六 年
Panzercrisis
3
Jika saya bisa melakukan ini di Youtube. "Seperti jika kamu menonton ini di <? Php echo date (" Y ");?>"
Luka
Kenapa saya menggunakan 'y'? : /
Guga Nemsitsveridze
515
<?php echo date("Y"); ?>
Daniel Papasian
sumber
32
Juga,<?= date('Y') ?>
Shane Reustle
33
tag pendek tidak didukung oleh semua server dan ada juga ini: programmers.stackexchange.com/questions/151661/…
Dirk Hartzer Waldeck
5
Di PHP 5.4, Anda dapat dengan bebas menggunakan tag gema pendek seperti di atas. Mereka jauh lebih bagus dalam pandangan saya.
Jimbo
1
@ShaneReustle, Anda melewatkan titik koma di akhir;) Saya tahu mereka tidak penting dalam kasus ini, tetapi ini adalah praktik yang baik untuk pemula :)
Dimitar
204

Versi super malas saya menunjukkan garis hak cipta, yang secara otomatis tetap diperbarui:

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

Tahun ini (2008), dikatakan:

© 2008 Me, Inc.

Tahun depan, ia akan mengatakan:

© 2008-2009 Me, Inc.

dan selamanya diperbarui dengan tahun berjalan.


Atau (PHP 5.3.0+) cara ringkas untuk melakukannya menggunakan fungsi anonim sehingga Anda tidak memiliki variabel yang bocor dan tidak mengulangi kode / konstanta:

&copy; 
<?php call_user_func(function($y){$c=date('Y');echo $y.(($y!=$c)?'-'.$c:'');}, 2008); ?> 
Me, Inc.
gregmac
sumber
15
Versi yang lebih pendek (tetapi kurang dapat dibaca):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct
Versi satu baris saya:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000
71

Dengan PHP yang mengarah ke arah yang lebih berorientasi objek, saya terkejut tidak ada orang di sini yang mereferensikan DateTimekelas bawaan:

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

atau satu-liner dengan akses anggota kelas di instantiation (php> = 5.4):

$year = (new DateTime)->format("Y");
Thomas Kelley
sumber
28
strftime("%Y");

Saya suka strftime . Ini adalah fungsi yang bagus untuk meraih / mengkombinasikan potongan tanggal / waktu.

Plus itu menghormati pengaturan lokal yang fungsi tanggal tidak lakukan.

Mark Biek
sumber
14

Ini memberi Anda waktu setempat:

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

Dan ini UTC :

$year = gmdate('Y'); // 2008
Alexey Lebedev
sumber
12

Inilah yang saya lakukan:

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

di bawah ini adalah sedikit penjelasan tentang apa yang dilakukannya:

d = day
m = month
Y = year

Y akan memberi Anda empat digit (mis. 1990) dan y untuk dua digit (mis. 90)

Abdul Rahman A Samad
sumber
10

echo date('Y')memberi Anda tahun sekarang, dan ini akan diperbarui secara otomatis karena date()memberi kami tanggal saat ini.

kkarayat
sumber
8

gunakan fungsi PHP yang baru saja dipanggil date().

Dibutuhkan tanggal saat ini dan kemudian Anda memberikan format untuk itu

dan formatnya akan menjadi Y. Capital Y akan menjadi tahun empat digit.

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

Kode ini harus dilakukan

Abdelkader Soudani
sumber
1
Cobalah untuk menghindari tag formulir pendek, apakah itu <? atau <? = karena ini bukan praktik yang baik. Perlu disebutkan juga bahwa banyak kerangka kerja yang baik seperti Zend tidak memperbolehkan tautan tag pembuka PHP singkat. Jadi, demi saya, lakukan beberapa penekanan tombol untuk menghemat keterbacaan kode Anda.
Wael Assaf
7

Jika server Anda mendukung Tag Pendek, atau Anda menggunakan PHP 5.4, Anda dapat menggunakan:

<?=date("Y")?>
PanicGrip
sumber
6
Tolong, jangan pernah, pernah, gunakan tag pendek lagi. stackoverflow.com/questions/200640/…
Jelmer
php v5.4.0 - tag <? = selalu tersedia terlepas dari pengaturan short_open_tag ini. Jadi sekarang Anda dapat menggunakan sintaks ini.
nektobit
7

Tulis saja:

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

Atau:

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

Dan 'gema' nilai ini ...

Saadk
sumber
5

Anda dapat menggunakan kelas tanggal PHP sederhana. Ini menyediakan banyak metode dan fungsi yang berguna:

$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();
...

Anda dapat memeriksa halaman tutorial perpustakaan untuk lebih banyak contoh

adalah
sumber
5

BTW ... ada beberapa cara yang tepat bagaimana menampilkan hak cipta situs. Beberapa orang memiliki kecenderungan untuk membuat hal-hal yang berlebihan yaitu: Hak cipta © memiliki arti yang sama. Bagian hak cipta yang penting adalah:

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

Menggunakan PHP + HTML:

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

atau

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

Hingga php 5.4+

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

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

Atau Anda dapat menggunakannya dengan satu baris

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

Jika Anda ingin menambah atau mengurangi tahun metode lain; tambahkan garis modifikasi seperti di bawah ini.

<?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')
?>
Ivan Barayev
sumber
5

gunakan date()fungsi PHP .

dan formatnya akan menjadi Y. Capital Y akan menjadi tahun empat digit.

<?php echo date("Y"); ?>
Sanu0786
sumber
4

shortcode terbaik untuk bagian ini:

<?= date("Y"); ?>
Omid Ahmadyani
sumber
Saya akan menulis yang sama: D
Lukas
3

Dapatkan Tahun penuh digunakan:

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

Atau dapatkan hanya dua digit tahun yang digunakan seperti ini:

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

Cara saya untuk menunjukkan hak cipta, Itu terus memperbarui secara otomatis

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

Ini akan menampilkan hasil sebagai

copyright @ 2017   //if $copyYear is 2017 
copyright @ 2017-201x    //if $copyYear is not equal to Current Year.
Sushank Pokharel
sumber
2
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

Anda dapat menggunakan ini di bagian footer untuk mendapatkan tahun hak cipta yang dinamis

imtaher
sumber
0

$ year = date ("Y", strtotime ($ yourDateVar));

Hernán Eche
sumber
-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;
?>
Gaurav
sumber
1
Ini bukan yang mereka minta atau jawaban yang dijelaskan.
Elliot A.