ChatGPT解决这个技术问题 Extra ChatGPT

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

我想在网站的页脚添加版权声明,但我认为过时的年份太俗气了。

如何使用 PHP 4PHP 5 自动更新年份?

echo date("Y");
我收到了警告。添加 date_default_timezone_set('UTC');以避免收到警告。 ('UTC+1' 不起作用......不能像刚开始使用 PHP 那样告诉你)。可能有一些方法可以配置 PHP 以避免抛出警告(在一些配置文件中,如 php.ini)。
@justin 这意味着您尚未设置默认时区,PHP 不喜欢这样。您可以在 php.ini 文件中使用 date.timezone = "America/Los_Angeles" 之类的内容设置默认时区,也可以在代码的开头使用 date_default_timezone_set( "America/Los_Angeles" ) 之类的内容进行设置。
注意:版权声明中的年份实际上并没有太大的法律价值,但通常是为了帮助想知道版权是否仍然适用的人而添加的。因此,它应该是作品出版的那一年。仅使用当前年份确实没有任何意义......但是我已经看到它做了无数次。
我个人认为它已成为一种网络约定,因此尽管您在技术上是正确的,但这并不是人们所期望的。事实仍然是,尽管在包含 2007 年撰写的文章的页面的页脚上标明“版权所有 2007,保留所有权利”在技术上是正确的,但该站点的访问者可能会认为该站点已被放弃。甚至很大即使是“2007-2015”,拥有律师团队的公司仍会在其网页上标记当前年份。

J
Jason

您可以使用 datestrftime。在这种情况下,我会说一年就是一年,无论如何(除非有一个以不同方式格式化年份的语言环境?)

例如:

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

附带说明一下,在 PHP 中格式化日期时,如果您想在与默认设置不同的语言环境中格式化日期,这很重要。如果是这样,您必须使用 setlocale 和 strftime。根据日期的php manual

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

从这个角度来看,我认为最好尽可能多地使用 strftime,如果您甚至有可能必须本地化您的应用程序。如果这不是问题,请选择您最喜欢的那个。


@ErikvanBrakel 只是出于兴趣,泰国的当前年份是 2556。不确定 PHP 语言环境是否考虑到这一点,但在一个完美的世界中应该:)
你可以简单地说: date("Y");
中国和日本的岁月! 2016年/二千十六年
如果我能在 Youtube 上做到这一点。 “就像你在
您也可以使用 now()->year ... 几乎相同
L
Larsenal
<?php echo date("Y"); ?>

并非所有服务器都支持短标签,还有:programmers.stackexchange.com/questions/151661/…
在 PHP 5.4 中,您可以自由地使用类似上面的短回显标签。恕我直言,他们的观点要好得多。
@ShaneReustle,你错过了最后的分号;)我知道在这种情况下它们并不重要,但对于初学者来说这是一个很好的做法:)
g
gregmac

我显示版权行的超级懒惰版本,它会自动保持更新:

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

今年(2008 年),它会说:

© 2008 我公司。

明年,它会说:

© 2008-2009 我公司。

并永远保持与当前年份的更新。

或者(PHP 5.3.0+)一种使用匿名函数的紧凑方法,这样您就不会有变量泄漏,也不会重复代码/常量:

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

较短(但可读性较差)的版本:&copy; <?php echo 2008 != date('Y') ? '2008 - ' . date('Y') : 2008; ?> Me, Inc.
我的单行版本:<?php echo '&copy; 2008', ($year = gmdate("Y")) !== '2008'? ' - '.$year : '', ' Me, Inc.'; ?>
T
Thomas Kelley

随着 PHP 朝着更加面向对象的方向发展,我很惊讶这里没有人引用内置的 DateTime 类:

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

或在实例化时具有类成员访问权限的单线(php> = 5.4):

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

N
Naveed

http://us2.php.net/date

echo date('Y');

M
Mark Biek
strftime("%Y");

我喜欢strftime。这是抓取/重新组合日期/时间块的绝佳功能。

另外,它尊重日期功能不做的区域设置。


A
Alfred Huang

这个给你当地时间:

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

这是一个UTC:

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

A
Abdul Rahman A Samad

这就是我所做的:

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

下面是对它的作用的一些解释:

d = day
m = month
Y = year

Y 会给你四位数字(例如 1990)和 y 两位数(例如 90)


J
Janyk

对于 4 位表示:

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

2位数字表示:

<?php echo date('y'); ?>

查看 php 文档以获取更多信息:https://secure.php.net/manual/en/function.date.php


P
Peter Mortensen

echo date('Y') 为您提供当前年份,这将自动更新,因为 date() 为我们提供当前日期。


J
Janyk
print date('Y');

有关详细信息,请查看 date() 函数文档:https://secure.php.net/manual/en/function.date.php


W
Wael Assaf

使用刚刚称为 date() 的 PHP 函数。

它采用当前日期,然后您为其提供格式

格式将是 Y。大写 Y 将是一个四位数的年份。

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

A
Abdelkader Soudani
<?php echo date("Y"); ?>

这段代码应该做


尽量避免使用短格式标签,无论是 <?或 <?= 因为这不是一个好习惯。值得一提的是,像 Zend 这样的许多优秀框架不允许速记 PHP 开始标记 link 所以为了我的缘故,请执行一些击键以保存您的代码可读性。
这似乎只是 this existing answer 的重复。
@Pang 或 PHP 的 date() 函数的重复 :)
P
Peter Mortensen

写吧:

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

并“回显”这个值......


S
Sanu0786

使用 PHP date() 函数。

格式将是 Y。大写 Y 将是一个四位数的年份。

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

P
PanicGrip

如果您的服务器支持短标签,或者您使用 PHP 5.4,您可以使用:

<?=date("Y")?>

请永远不要再使用短标签。 stackoverflow.com/questions/200640/…
php v5.4.0 - 标签
M
Milan

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

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

I
Ivan Barayev

最高 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')
?>

M
Mr. Coderx
$dateYear = date('Y');
echo "Current Year: $dateYear";

当年:2022

$dateYear = date('y');
echo $dateYear;

22


S
Suraj Rao

获得全年使用:

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

M
Musa Haidari

要使用 PHP 的日期函数获取当前年份,您可以传入“Y”格式字符,如下所示:

//Getting the current year using
//PHP's date function.

$year = date("Y");
echo $year;

上面的示例将打印出当前年份的完整 4 位表示。

如果您只想检索 2 位格式,则可以使用小写“y”格式字符:

$year = date("y");
echo $year;
1
2
$year = date("y");
echo $year;

上面的代码段将打印出 20 而不是 2020,或 19 而不是 2019,等等。


是的。谢谢。这很棒@Musa
S
Sagar Devkota

我展示版权的方式,不断自动更新

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

O
Omid Ahmadyani

本节的最佳简码:

<?= date("Y"); ?>

我会写同样的:D
i
imtaher
<?php date_default_timezone_set("Asia/Kolkata");?><?=date("Y");?>

您可以在页脚部分使用它来获得动态版权年份


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

A
Ayaz Khalid

在 Laravel 中

$date = Carbon::now()->format('Y');
return $date;

在 PHP 中

echo date("Y");

D
Dharman

就我而言,wordpress 网站页脚中的版权声明需要更新。

以为简单,但涉及的步骤或超出预期。

在您的主题文件夹中打开 footer.php。找到版权文本,预计这都是硬编码的,但发现:

现在我们知道年份写在 WordPress 管理员的某个地方,所以找到它以删除年份文字。在 WP-Admin 中,转到左侧主管理菜单上的选项:然后在下一页转到选项卡免责声明:在顶部附近您会找到版权年份:删除 © 符号 + 年份 + 年份后面的空格,然后使用页面右上角的更新按钮保存您的页面。现在删除年份的文本版本,我们可以去添加使用 PHP 自动更新的年份。返回到 footer.php 中的 STEP 2 中的代码块并将其更新为: 完成!只需要测试以确保更改已按预期生效。

对于许多人来说,情况可能并不相同,但是我们在很多客户站点中都遇到了这种模式,并认为最好在此处记录。


d
dev

用 M 打印当前月份,用 D 打印日期,用 Y 打印年份。

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

P
Pascal Tovohery

有关日期函数 strtotime 中第二个参数的更多价格,请返回参数传递的时间戳

// This work when you get time as string
echo date('Y', strtotime("now"));

// Get next years
echo date('Y', strtotime("+1 years"));

// 
echo strftime("%Y", strtotime("now"));

有日期时间类

echo (new DateTime)->format('Y');

请分享更多细节。这应该比date('Y')更精确吗?哪些案例适合您的答案,但不适用于将近 13 岁的案例?
首先,为什么是 strtotime("now") 而不是 time()?第二,当日期函数的默认参数是当前时间时,为什么要添加 strtotime("now")?我看到很多人在使用它并认为这更准确,但实际上,您正在添加一个带有字符串比较的函数调用,因此简而言之,您会使代码变慢。
M
Md. Saifur Rahman

创建一个辅助函数并调用它

getCurrentYear();

function getCurrentYear(){
    return now()->year;
}