ฉันจะใช้ PHP เพื่อรับปีปัจจุบันได้อย่างไร


936

ฉันต้องการที่จะแจ้งให้ทราบลิขสิทธิ์ในส่วนท้ายของเว็บไซต์ แต่ฉันคิดว่ามันไม่มีรสนิยมที่เหลือเชื่อสำหรับปีที่จะล้าสมัย ฉันจะทำการอัพเดตปีอัตโนมัติด้วยPHP 4และPHP 5 ได้อย่างไร


630
echo date("Y");
doub1ejack

2
ฉันได้รับคำเตือนเมื่อใช้สิ่งนั้น เพิ่ม date_default_timezone_set ('UTC'); เพื่อหลีกเลี่ยงการเตือน ('UTC + 1' ใช้งานไม่ได้ ... บอกไม่ได้ว่าเริ่มด้วย PHP) อาจมีวิธีการกำหนดค่า PHP บางอย่างเพื่อหลีกเลี่ยงการทิ้งคำเตือน (ในไฟล์ปรับแต่งบางอย่างเช่น php.ini)
justin

4
@justin ซึ่งหมายความว่าคุณไม่ได้ตั้งค่าเขตเวลาเริ่มต้นและ PHP ไม่ชอบ คุณสามารถตั้งค่าเขตเวลาเริ่มต้นในphp.iniไฟล์ที่มีสิ่งที่ต้องการหรือคุณสามารถตั้งค่าที่จุดเริ่มต้นของรหัสของคุณมีสิ่งที่ต้องการdate.timezone = "America/Los_Angeles" date_default_timezone_set( "America/Los_Angeles" )
Joshua Pinter

7
หมายเหตุ: ปีในการแจ้งให้ทราบลิขสิทธิ์ไม่ได้มีคุณค่าทางกฎหมายมากนัก แต่มักจะถูกเพิ่มเพื่อช่วยเหลือผู้ที่ต้องการทราบว่าลิขสิทธิ์ยังคงมีผลอยู่หรือไม่ เช่นนี้น่าจะเป็นปีที่งานตีพิมพ์ เพียงแค่ใช้ปีปัจจุบันจริงๆแล้วมันก็ไม่สมเหตุสมผลอะไรเลย ... อย่างไรก็ตามฉันได้เห็นมันทำมานับครั้งไม่ถ้วน
Stijn de Witt

7
โดยส่วนตัวฉันขอยืนยันว่ามันได้กลายเป็นรูปแบบการประชุมทางเว็บดังนั้นแม้ว่าคุณจะถูกต้องทางเทคนิค แต่ก็ไม่ใช่สิ่งที่คนคาดหวัง ความจริงยังคงมีอยู่แม้ว่าจะมี "ลิขสิทธิ์ 2007 สงวนลิขสิทธิ์" ที่ส่วนท้ายของหน้าเว็บที่มีบทความที่เขียนในปี 2007 นั้นถูกต้องทางเทคนิคผู้เข้าชมเว็บไซต์น่าจะสันนิษฐานว่าเว็บไซต์นั้นถูกทอดทิ้ง บริษัท ที่มีทีมทนายยังคงประทับตราหน้าเว็บของตนกับปีปัจจุบันแม้ว่าจะเป็น '2007-2015' ก็ตาม
Nathan Hornby

คำตอบ:


1151

คุณสามารถใช้ทั้งวันหรือstrftime ในกรณีนี้ฉันจะบอกว่ามันไม่สำคัญว่าปีจะเป็นหนึ่งปีไม่ว่าจะเกิดอะไรขึ้น (เว้นแต่ว่ามีสถานที่ที่จัดรูปแบบปีแตกต่างกันหรือไม่)

ตัวอย่างเช่น:

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

ในบันทึกย่อด้านข้างเมื่อจัดรูปแบบวันที่ใน PHP มันสำคัญเมื่อคุณต้องการจัดรูปแบบวันที่ของคุณในสถานที่ที่แตกต่างจากค่าเริ่มต้นของคุณ ถ้าเป็นเช่นนั้นคุณต้องใช้ setlocale และ strftime ตามคู่มือ phpในวันที่:

หากต้องการจัดรูปแบบวันที่เป็นภาษาอื่นคุณควรใช้ฟังก์ชั่น setlocale () และ strftime () แทน date ()

จากมุมมองนี้ฉันคิดว่ามันจะเป็นการดีที่สุดที่จะใช้ strftime มากที่สุดเท่าที่จะเป็นไปได้ถ้าคุณมีความเป็นไปได้จากระยะไกลที่ต้อง จำกัด แอปพลิเคชั่นของคุณ หากนั่นไม่ใช่ปัญหาให้เลือกคนที่คุณชอบที่สุด


4
@ErikvanBrakel เพิ่งเริ่มสนใจปีปัจจุบันในประเทศไทยคือ 2556 ไม่แน่ใจว่า PHP locale คำนึงถึงเรื่องนี้หรือไม่ แต่ในโลกที่สมบูรณ์แบบมันควรจะเป็นเช่นนั้น :)
Dirk Hartzer Waldeck

คุณสามารถพูดง่ายๆ: วันที่ ("Y");

ftw จีนและญี่ปุ่น! 2016 年 / 二千十六年
Panzercrisis

3
ถ้าฉันสามารถทำได้ใน Youtube "เช่นถ้าคุณกำลังดูสิ่งนี้ใน <? php echo date (" Y ");?>"
Luka

ทำไมผมใช้'y'? : /
Guga Nemsitsveridze

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

32
นอกจากนี้<?= date('Y') ?>
เชน Reustle

33
แท็กสั้น ๆ ไม่ได้รับการสนับสนุนโดยเซิร์ฟเวอร์ทั้งหมดและยังมีสิ่งนี้: programmers.stackexchange.com/questions/151661/ …
Dirk Hartzer Waldeck

5
ใน PHP 5.4 คุณสามารถใช้แท็ก echo สั้น ๆ ดังกล่าวได้อย่างอิสระ พวกเขาดูดีขึ้นมาก
Jimbo

1
@ShaneReustle คุณพลาดอัฒภาคที่สิ้นสุด;) ฉันรู้ว่าพวกเขาไม่ได้มีความสำคัญในกรณีนี้ แต่มันเป็นวิธีที่ดีสำหรับผู้เริ่มต้น :)
ดิมิทาร์

204

การแสดงสายลิขสิทธิ์รุ่นพิเศษของฉันที่อัปเดตโดยอัตโนมัติ:

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

ปีนี้ (2008) จะกล่าวว่า:

© 2008 Me, Inc.

ปีหน้ามันจะพูดว่า:

© 2008-2009 Me, Inc.

และปรับปรุงอยู่ตลอดไปกับปีปัจจุบัน


หรือ (PHP 5.3.0+) วิธีที่กะทัดรัดในการทำโดยใช้ฟังก์ชั่นที่ไม่ระบุชื่อดังนั้นคุณจึงไม่มีตัวแปรรั่วไหลออกมาและอย่าทำซ้ำรหัส / ค่าคงที่:

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

15
รุ่นที่สั้นกว่า (แต่อ่านได้น้อยกว่า):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodestruct

รุ่นหนึ่งบรรทัดของฉัน:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000

71

ด้วยหัวข้อ PHP ในทิศทางที่มุ่งเน้นวัตถุมากขึ้นฉันไม่แปลกใจเลยที่ไม่มีใครได้อ้างอิงDateTimeคลาสในตัว:

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

หรือหนึ่งซับในที่มีการเข้าถึงสมาชิกคลาสบนอินสแตนซ์ (php> = 5.4):

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


28
strftime("%Y");

ฉันรักstrftime มันเป็นฟังก์ชั่นที่ยอดเยี่ยมสำหรับการจับ / รวบรวมชิ้นส่วนของวันที่ / เวลา

นอกจากนี้ยังเคารพการตั้งค่าสถานที่ซึ่งฟังก์ชั่นวันที่ไม่ได้ทำ




12

นี่คือสิ่งที่ฉันทำ:

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

ด้านล่างนี้เป็นคำอธิบายเล็กน้อยเกี่ยวกับสิ่งที่ทำ:

d = day
m = month
Y = year

Y จะให้สี่หลัก (เช่น 1990) และ y สำหรับสองหลัก (เช่น 90)


10

echo date('Y')ให้ปีปัจจุบันแก่คุณและสิ่งนี้จะอัปเดตโดยอัตโนมัติตั้งแต่date()ให้เราวันที่ปัจจุบัน



8

ใช้ฟังก์ชัน PHP date()ซึ่งจะเรียกว่าเพียงแค่

ต้องใช้วันที่ปัจจุบันแล้วให้รูปแบบ

และรูปแบบก็จะเป็น Y. ทุน Y จะเป็นปีสี่หลัก

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

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

รหัสนี้ควรทำ


1
พยายามหลีกเลี่ยงแท็กแบบย่อไม่ว่าจะเป็น <หรือไม่ หรือ <? = เพราะมันไม่ใช่วิธีปฏิบัติที่ดี เป็นเรื่องที่ควรกล่าวถึงแม้ว่าเฟรมเวิร์กที่ดีมากมายเช่น Zend จะไม่อนุญาตให้ลิงก์แท็กเปิด PHP แบบสั้นดังนั้นโปรดใช้การกดแป้นพิมพ์เพื่อบันทึกการอ่านโค้ดของคุณ
Wael Assaf

7

หากเซิร์ฟเวอร์ของคุณรองรับ Short Tags หรือคุณใช้ PHP 5.4 คุณสามารถใช้:

<?=date("Y")?>

6
โปรดไม่เคยเคยใช้แท็กสั้นอีกครั้ง stackoverflow.com/questions/200640/…
Jelmer

php v5.4.0 - แท็ก <? = สามารถใช้ได้เสมอโดยไม่คำนึงถึงการตั้งค่า short_open_tag ini ดังนั้นตอนนี้คุณสามารถใช้ไวยากรณ์นี้ได้
nektobit

7

แค่เขียน:

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

หรือ:

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

และ 'echo' ค่านี้ ...


5

คุณสามารถใช้คลาส date PHP อย่างง่าย มันมีวิธีการและฟังก์ชั่นที่มีประโยชน์มากมาย:

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

คุณสามารถตรวจสอบหน้าบทเรียนของห้องสมุดเพื่อดูตัวอย่างเพิ่มเติม


5

BTW ... มีวิธีการที่เหมาะสมในการแสดงลิขสิทธิ์ไซต์ บางคนมีแนวโน้มที่จะทำสิ่งที่ซ้ำซ้อนเช่น: ลิขสิทธิ์©มีทั้งความหมายเดียวกัน ส่วนลิขสิทธิ์ที่สำคัญคือ:

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

ใช้ PHP + HTML:

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

หรือ

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

5

มากถึง php 5.4+

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

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

หรือคุณสามารถใช้กับหนึ่งบรรทัด

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

หากคุณต้องการเพิ่มหรือลดปีด้วยวิธีอื่น เพิ่มบรรทัดแก้ไขดังด้านล่าง

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

ใช้date()ฟังก์ชั่นPHP

และรูปแบบก็จะเป็น Y. ทุน Y จะเป็นปีสี่หลัก

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


3

รับทั้งปีที่ใช้:

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

หรือใช้ตัวเลขปีสองหลักเท่านั้นเช่น:

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

3

วิธีในการแสดงลิขสิทธิ์ของฉันนั่นทำให้มีการปรับปรุงโดยอัตโนมัติ

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

มันจะออกผลลัพธ์เป็น

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");?>

คุณสามารถใช้ส่วนท้ายกระดาษเพื่อรับปีลิขสิทธิ์แบบไดนามิก



-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
นี่ไม่ใช่สิ่งที่พวกเขาขอหรือคำตอบที่อธิบายไว้
Elliot A.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.