Làm cách nào để sử dụng PHP để có được năm hiện tại?


937

Tôi muốn đặt một thông báo bản quyền ở chân trang của một trang web, nhưng tôi nghĩ rằng nó cực kỳ khó xử trong năm nay đã lỗi thời. Làm cách nào để tự động cập nhật năm với PHP 4PHP 5 ?


630
echo date("Y");
ngờ1ejack

2
Tôi đã nhận được một cảnh báo bằng cách sử dụng đó. Đã thêm date_default_timezone_set ('UTC'); để tránh nhận được cảnh báo. ('UTC + 1' không hoạt động ... không thể cho bạn biết nhiều khi chỉ bắt đầu với PHP). Có lẽ có một số cách để định cấu hình PHP để tránh đưa ra các cảnh báo (trong một số tệp cấu hình như php.ini).
justin

4
@justin Điều này có nghĩa là bạn chưa đặt múi giờ mặc định và PHP không như vậy. Bạn có thể đặt múi giờ mặc định trong php.initệp bằng một cái gì đó giống như date.timezone = "America/Los_Angeles"hoặc bạn có thể đặt nó ở đầu mã của mình bằng một cái gì đó như date_default_timezone_set( "America/Los_Angeles" ).
Joshua Pinter

7
LƯU Ý: Năm trong thông báo bản quyền không thực sự có nhiều giá trị pháp lý, nhưng thường được thêm vào để hỗ trợ những người muốn biết liệu bản quyền có còn được áp dụng hay không. Vì vậy, nó được coi là năm mà tác phẩm được xuất bản. Chỉ sử dụng năm hiện tại thực sự không có ý nghĩa gì ... Tuy nhiên tôi đã thấy nó được thực hiện vô số lần.
Stijn de Witt

7
Cá nhân tôi cho rằng nó đã trở thành một quy ước web, vì vậy mặc dù bạn đúng về mặt kỹ thuật, đó không phải là điều mọi người mong đợi. Sự thật vẫn là mặc dù có, ví dụ như "Bản quyền 2007, tất cả các quyền được bảo lưu trên phần cuối của trang có chứa một bài viết được viết vào năm 2007 là đúng về mặt kỹ thuật, khách truy cập vào trang web có thể cho rằng trang web đã bị bỏ rơi. các tập đoàn với đội ngũ luật sư vẫn đóng dấu các trang web của họ với năm hiện tại, ngay cả khi đó là '2007-2015'.
Nathan Hornby

Câu trả lời:


1152

Bạn có thể sử dụng một trong hai ngày hoặc strftime . Trong trường hợp này, tôi muốn nói rằng không thành vấn đề vì một năm là một năm, không có vấn đề gì (trừ khi có một địa điểm định dạng năm khác nhau?)

Ví dụ:

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

Mặt khác, khi định dạng ngày trong PHP, vấn đề là khi bạn muốn định dạng ngày của mình ở một địa điểm khác với địa điểm mặc định. Nếu vậy, bạn phải sử dụng setlocale và strftime Theo hướng dẫn sử dụng php vào ngày:

Để định dạng ngày trong các ngôn ngữ khác, bạn nên sử dụng các hàm setlocale () và strftime () thay vì date ().

Từ quan điểm này, tôi nghĩ tốt nhất nên sử dụng strftime càng nhiều càng tốt, nếu bạn thậm chí có khả năng từ xa phải bản địa hóa ứng dụng của mình. Nếu đó không phải là vấn đề, hãy chọn thứ bạn thích nhất.


4
@ErikvanBrakel không được quan tâm trong năm nay tại Thái Lan là 2556. không chắc là địa phương PHP có tính đến điều này không nhưng trong một thế giới hoàn hảo thì nên :)
Dirk Hartzer Waldeck 6/213

Bạn chỉ có thể nói đơn giản: ngày ("Y");

Năm Trung Quốc và Nhật Bản ftw! 2016年/二千十六年
Panzercrisis

3
Nếu tôi có thể làm điều này trên Youtube. "Giống như nếu bạn đang xem cái này trong <? Php ngày echo (" Y ");?>"
Luka

Tại sao tôi sử dụng 'y'? : /
Guga Nemsitsveridze

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

32
Ngoài ra,<?= date('Y') ?>
Shane Reustle

33
Các thẻ ngắn không được hỗ trợ bởi tất cả các máy chủ và cũng có điều này: lập trình
viên.stackexchange.com /questions / 151661 / Giả

5
Trong PHP 5.4, bạn có thể tự do sử dụng các thẻ echo ngắn như trên. Chúng đẹp hơn nhiều trong lượt xem imho.
Jimbo

1
@ShaneReustle, bạn đã bỏ lỡ dấu chấm phẩy ở cuối;) Tôi biết chúng không quan trọng trong trường hợp này, nhưng đó là một thực hành tốt cho người mới bắt đầu :)
Dimitar

204

Phiên bản siêu lười biếng của tôi hiển thị một dòng bản quyền, tự động được cập nhật:

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

Năm nay (2008), nó sẽ nói:

© 2008 Tôi, Inc.

Năm tới, nó sẽ nói:

© 2008-2009 Tôi, Inc.

và mãi mãi được cập nhật với năm hiện tại.


Hoặc (PHP 5.3.0+) một cách nhỏ gọn để thực hiện bằng cách sử dụng hàm ẩn danh để bạn không bị biến ra và không lặp lại mã / hằng số:

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

15
Phiên bản ngắn hơn (nhưng ít đọc hơn):&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
hitautodesturation

Phiên bản một dòng của tôi:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
ale5000

71

Với tiêu đề PHP theo hướng hướng đối tượng hơn, tôi ngạc nhiên không có ai ở đây đã tham chiếu DateTimelớp tích hợp:

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

hoặc một lớp lót với quyền truy cập thành viên lớp trên khởi tạo (php> = 5.4):

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


28
strftime("%Y");

Tôi yêu strftime . Đây là một chức năng tuyệt vời để lấy / kết hợp các khối ngày / lần.

Thêm vào đó, nó tôn trọng các cài đặt ngôn ngữ mà chức năng ngày không thực hiện.


14

Điều này cung cấp cho bạn thời gian địa phương:

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

Và cái này UTC :

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


12

Đây là những gì tôi làm:

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

dưới đây là một chút giải thích về những gì nó làm:

d = day
m = month
Y = year

Y sẽ cung cấp cho bạn bốn chữ số (ví dụ 1990) và y cho hai chữ số (ví dụ 90)


10

echo date('Y')cung cấp cho bạn năm hiện tại và điều này sẽ tự động cập nhật kể từ khi date()cung cấp cho chúng tôi ngày hiện tại.



8

sử dụng một hàm PHP vừa được gọi date().

Nó mất ngày hiện tại và sau đó bạn cung cấp một định dạng cho nó

và định dạng sẽ là Y. Capital Y sẽ là một năm có bốn chữ số.

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

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

Mã này nên làm


1
Cố gắng tránh các thẻ dạng ngắn, cho dù đó là <? hoặc <? = vì đó không phải là một thực hành tốt. Điều đáng nói là mặc dù nhiều khung công tác tốt như Zend không cho phép tốc ký liên kết thẻ mở PHP vì vậy, vì lợi ích của tôi, hãy thực hiện một số tổ hợp phím để tiết kiệm khả năng đọc mã của bạn.
Wael Assaf

7

Nếu máy chủ của bạn hỗ trợ Thẻ ngắn hoặc bạn sử dụng PHP 5.4, bạn có thể sử dụng:

<?=date("Y")?>

6
Xin vui lòng, đừng bao giờ, bao giờ, sử dụng lại các thẻ ngắn. stackoverflow.com/questions/200640/ trên
Jelmer

php v5.4.0 - thẻ <? = luôn có sẵn bất kể cài đặt short_open_tag ini. Bây giờ bạn có thể sử dụng cú pháp này.
nektobit

7

Chỉ viết:

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

Hoặc là:

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

Và 'echo' giá trị này ...


5

Bạn có thể sử dụng lớp ngày PHP đơn giản. Nó cung cấp nhiều phương thức và chức năng hữu ích:

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

Bạn có thể kiểm tra trang hướng dẫn thư viện để biết thêm ví dụ


5

BTW ... có một vài cách thích hợp để hiển thị bản quyền trang web. Một số người có xu hướng làm cho mọi thứ trở nên dư thừa, tức là: Bản quyền © có cả hai ý nghĩa giống nhau. Các phần bản quyền quan trọng là:

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

Sử dụng PHP + HTML:

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

hoặc là

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

5

Cho tới php 5.4+

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

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

Hoặc bạn có thể sử dụng nó với một dòng

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

Nếu bạn muốn tăng hoặc giảm năm phương pháp khác; thêm dòng sửa đổi như dưới đâ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

sử dụng date()hàm PHP .

và định dạng sẽ là Y. Capital Y sẽ là một năm có bốn chữ số.

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


3

Nhận toàn bộ năm sử dụng:

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

Hoặc chỉ nhận được hai chữ số của năm được sử dụng như thế này:

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

3

Cách của tôi để hiển thị bản quyền, Điều đó tiếp tục cập nhật tự động

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

Nó sẽ cho kết quả như

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

Bạn có thể sử dụng điều này trong các phần chân trang để có được năm bản quyền động



-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
Đây không phải là những gì họ đang yêu cầu cũng không phải là một câu trả lời giải thích.
Elliot A.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.