如何使用PHP获取当前年份?


934

我想在网站的页脚中放一个版权声明,但是我认为对于过时的一年来说,这是非常令人难以置信的。如何使用PHP 4PHP 5自动更新年份?


629
echo date("Y");
doub1ejack 2012年

2
我收到了警告。添加了date_default_timezone_set('UTC'); 以避免得到警告。('UTC + 1'无法正常工作……不能告诉您很多东西,就像从PHP开始一样)。也许有一些方法可以配置PHP以避免抛出警告(在某些配置文件中,例如php.ini)。
贾斯汀2014年

4
@justin这意味着您尚未设置默认时区,PHP不喜欢这样。您可以使用php.ini类似的方法在文件中设置默认时区,date.timezone = "America/Los_Angeles"也可以使用类似的方法在代码的开头设置默认时区date_default_timezone_set( "America/Los_Angeles" )
2014年

7
注意:版权声明中的年份实际上并没有太大的法律价值,但通常是为了帮助想要知道版权是否仍然适用的人们而添加​​。因此,应该将其发布。仅使用当前年份确实没有任何意义……但是我看到它做了无数次。
Stijn de Witt 2014年

7
我个人认为这已经成为网络惯例,因此尽管您在技术上是正确的,但这并不是人们期望的。事实仍然是,尽管在包含2007年撰写的文章的页面的页脚上刻有“版权2007,保留所有权利”在技术上是正确的,但该站点的访问者很可能会认为该站点已被废弃。拥有律师团队的公司,即使是'2007-2015',也仍会在当年盖章
Nathan Hornby

Answers:


1149

您可以使用datestrftime。在这种情况下,我会说这无关紧要,因为一年是一年,无论如何(除非有一个区域设置将年的格式设置为其他格式?)

例如:

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

附带说明一下,用PHP格式化日期时,要以不同于默认语言环境的日期格式化日期很重要。如果是这样,则必须使用setlocale和strftime。根据日期的php手册

要使用其他语言格式化日期,应使用setlocale()和strftime()函数而不是date()。

从这个角度来看,我认为最好是尽可能使用strftime,即使您不得不本地化应用程序的可能性很小。如果这不是问题,请选择最喜欢的一个。


4
@ErikvanBrakel在泰国今年的兴趣刚好是2556。不确定PHP语言环境是否考虑到了这一点,但在理想情况下应该这样:)
Dirk Hartzer Waldeck

您可以简单地说:date(“ Y”);

中国和日本的岁月!2016年/二千十六年
Panzercrisis 16-4-6

3
如果我可以在YouTube上做到这一点。“如果你喜欢在看这部<PHP的echo日期?(” Y “);?>”
卢卡

我为什么用'y'?:/
Guga Nemsitsveridze

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

32
另外,<?= date('Y') ?>
Shane Reustle

33
:短标签不是所有服务器都支持的,也有这个programmers.stackexchange.com/questions/151661/...
德克·哈特勒瓦尔德克

5
在PHP 5.4中,您可以像上面一样自由使用简短的echo标签。他们在意见恕我直言更好。
Jimbo

1
@ShaneReustle,您最后错过了分号;)我知道在这种情况下它们并不重要,但这对初学者来说是一个好习惯:)
Dimitar

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

70

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

如果您的服务器支持短标签,或者您使用的是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

然后“回声”这个值...


5

您可以使用简单的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

顺便说一句...有几种正确的方法来显示网站版权。有些人倾向于使事情变得多余,即:版权所有©两者具有相同的含义。重要的版权部分是:

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

使用PHP date()函数。

格式将为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.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.