【问题标题】:How do I get the current date and time in PHP?如何在 PHP 中获取当前日期和时间?
【发布时间】:2010-10-03 00:09:15
【问题描述】:

哪个 PHP 函数可以返回当前日期/时间?

【问题讨论】:

  • TLDR; $date = date('m/d/Y h:i:s a', time());
  • 看起来我们无法获取系统访问该站点的时间,除非使用 javascript。对于 PHP,我们可以设置一个固定的时区来获取该时区的当前时间。

标签: php datetime


【解决方案1】:

您可以使用$_SERVER['REQUEST_TIME'] variable(自 PHP 5.1.0 起可用)或time() function 来获取当前的 Unix 时间戳。

【讨论】:

  • 值得注意的是time()函数返回的时间戳与时区无关。 (所以之前调用date_default_timezone_set("your-particular-timezone"); 是没有效果的。)
  • @ban-geoengineering - 不确定“独立于时区”是什么意思;它“依赖于”服务器设置的时区?您可以将东海岸的服务器设置为西海岸的时区,反之亦然。
【解决方案2】:

PHP 的 time() 返回当前的 Unix 时间戳。有了这个,您可以使用date() 函数将其格式化为您的需要。

$date = date('Format String', time());

正如 Paolo 在 cmets 中提到的,第二个参数是多余的。下面的sn-p等价于上面的:

$date = date('Format String');

【讨论】:

  • 如果留空,则日期函数的第二个参数假定为 time()。
【解决方案3】:

您可以同时使用 $_SERVER['REQUEST_TIME'] 变量或 time() 函数。这两个都返回一个 Unix 时间戳。

大多数情况下,这两种解决方案将产生完全相同的Unix Timestamp。它们之间的区别在于$_SERVER['REQUEST_TIME'] 返回最近的服务器请求的时间戳,而time() 返回当前时间。根据您的应用程序,这可能会产生细微的准确性差异,但在大多数情况下,这两种解决方案都应该足够了。

根据上面的示例代码,一旦获得Unix Timestamp,您将需要格式化此信息。未格式化的Unix time 看起来像:1232659628

所以为了得到一些可以工作的东西,你可以使用 date() 函数来格式化它。

date() 函数的使用方法很好的参考位于PHP Manual

例如,以下代码返回如下所示的日期:01/22/2009 04:35:00 pm

echo date("m/d/Y h:i:s a", time());

【讨论】:

  • 不同的网络服务器如何处理$_SERVER['REQUEST_TIME']
  • 最佳答案。您甚至添加了如何从 UNIX 时间戳到普通人日期,非常感谢
【解决方案4】:

用途:

$date = date('m/d/Y h:i:s a', time());

有效。

【讨论】:

  • 我的意思是当我在 PST 时,时间会回到美国东部标准时间......但为什么呢?是服务器时间,服务器是 EST 吗?我可以获得用户的时间吗?他们的服务器可能是另一个时区,不是吗?
  • date函数是你服务器的时间,要么检查,要么在运行date之前临时设置/w PHP。
  • 谢谢,我的服务不能与 php 保持同步,因为 O 适用于 GMT 但不适用于 P 或“e”时区...谢谢!!
  • 这个 $date = date('m/d/Y h:i:s a', time());获取服务器日期,但仍然没有给我用户日期。当我在 PST 时,这是在 EST 向我展示的。我想获取用户发送表单的日期,并且像我一样,他们的服务器可能位于不同的时区。
  • 其实现在想起来时间并不像日期那么重要。谢谢大家!!
【解决方案5】:

时间将按您的服务器时间计算。一个简单的解决方法是在调用date()time() 函数之前使用date_default_timezone_set 手动设置时区。

我在墨尔本,Australia 所以我有这样的东西:

date_default_timezone_set('Australia/Melbourne');

或者另一个例子是洛杉矶 - US:

date_default_timezone_set('America/Los_Angeles');

您还可以通过以下方式查看服务器当前所在的时区:

date_default_timezone_get();

比如:

$timezone = date_default_timezone_get();
echo "The current server timezone is: " . $timezone;

所以你的问题的简短答案是:

// Change the line below to your timezone!
date_default_timezone_set('Australia/Melbourne');
$date = date('m/d/Y h:i:s a', time());

那么所有时间都将是您刚刚设置的时区:)

【讨论】:

  • 对time()的调用是多余的,date()会自动使用当前时间。
  • OP 从未询问过时区。一个更简单、更正确的答案只是显示服务器时间。
  • @AyexeM 我真的很欣赏额外的时区信息。它为我节省了第二次搜索。
  • 您可以从这里获取所有时区Time Zone
  • @AyexeM 一个更简单、更正确的答案不是省略潜在的重要和相关信息,而是按照您的建议回答问题,然后在其下方提供有关时区的其他信息。没有必要因为没有被要求而忽略潜在的重要信息。
【解决方案6】:
// Simply:
$date = date('Y-m-d H:i:s');

// Or:
$date = date('Y/m/d H:i:s');

// This would return the date in the following formats respectively:
$date = '2012-03-06 17:33:07';
// Or
$date = '2012/03/06 17:33:07';

/** 
 * This time is based on the default server time zone.
 * If you want the date in a different time zone,
 * say if you come from Nairobi, Kenya like I do, you can set
 * the time zone to Nairobi as shown below.
 */

date_default_timezone_set('Africa/Nairobi');

// Then call the date functions
$date = date('Y-m-d H:i:s');
// Or
$date = date('Y/m/d H:i:s');

// date_default_timezone_set() function is however
// supported by PHP version 5.1.0 or above.

有关时区参考,请参阅List of Supported Timezones

【讨论】:

  • 这是一个比上面的答案更直接的答案。谢谢!
  • 感谢您提供支持时区的链接,我正要谷歌它:)
【解决方案7】:

我发现在 PHP 中获取当前时间的最简单方法是这样的。

//Prints out something like 10:00am Just be sure to set your timezone correctly.
date_default_timezone_set("America/Chicago");
$TIME = date('G:ia'); 

【讨论】:

    【解决方案8】:
    <?php
    echo "<b>".date('l\, F jS\, Y ')."</b>";
    ?>
    

    这样打印

    2012 年 12 月 9 日,星期日

    【讨论】:

      【解决方案9】:

      由于 PHP 5.2.0 你可以使用 DateTime() 类:

      use \Datetime;
      
      $now = new DateTime();
      echo $now->format('Y-m-d H:i:s');    // MySQL datetime format
      echo $now->getTimestamp();           // Unix Timestamp -- Since PHP 5.3
      

      并指定timezone

      $now = new DateTime(null, new DateTimeZone('America/New_York'));
      $now->setTimezone(new DateTimeZone('Europe/London'));    // Another way
      echo $now->getTimezone();
      

      【讨论】:

      • 这是一个很好的答案,但你忘了告诉我们需要在调用它之前使用 \Datetime :) ty
      • @Amor.o 谢谢你的提醒,我现在已经更新了答案——虽然有点晚了,老实说,我不记得收到你的评论通知。关于Datatime命名空间的使用;我不记得 2013 年的情况是否如此,而且我已经多年没有编写任何 PHP 代码了。无论如何,您的建议似乎是正确的,所以再次感谢。
      【解决方案10】:
       $date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
       echo $date->format('d-m-Y H:i:s');
      

      更新

       //Also get am/pm in datetime:
       echo $date->format('d-m-Y H:i:s a'); // output 30-12-2013 10:16:15 am
      

      对于日期格式,PHP date() Function 很有用。

      【讨论】:

        【解决方案11】:

        参考:这里是a link

        由于夏令时,这比简单地将一天或一个月中的秒数添加或减去时间戳更可靠。

        PHP 代码

        // Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
        // Mountain Standard Time (MST) Time Zone
        
        $today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
        $today = date("m.d.y");                         // 03.10.01
        $today = date("j, n, Y");                       // 10, 3, 2001
        $today = date("Ymd");                           // 20010310
        $today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
        $today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
        $today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
        $today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
        $today = date("H:i:s");                         // 17:16:18
        $today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
        

        【讨论】:

        • 当然是最好的~
        【解决方案12】:

        根据文章How to Get Current Datetime (NOW) with PHP,获取当前日期的常用方法有两种。要使用 PHP 获取当前日期时间(现在),您可以将 date 类与任何 PHP 版本一起使用,或者更好地将 datetime 类与 PHP >= 5.2 一起使用。

        这里提供了各种日期格式表达式。

        使用日期的示例

        此表达式将以 Y-m-d H:i:s 格式返回 NOW。

        <?php
            echo date('Y-m-d H:i:s');
        ?>
        

        使用日期时间类的示例

        此表达式将以 Y-m-d H:i:s 格式返回 NOW。

        <?php
            $dt = new DateTime();
            echo $dt->format('Y-m-d H:i:s');
        ?>
        

        【讨论】:

          【解决方案13】:

          如果您想要不同的时间尺度,请使用:

          $tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
          $lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
          $nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
          
          date_default_timezone_set("Asia/Calcutta");
          echo date("Y/m/d H:i:s");
          

          【讨论】:

          • 你所说的“时间刻度”是什么意思?
          • “时区”,可能。
          • 我相信@Jaymin 可能意味着如果您想调整前一天、后一个月等的时间。
          【解决方案14】:

          设置您的时区:

          date_default_timezone_set('Asia/Calcutta');
          

          然后调用日期函数

          $date = date('Y-m-d H:i:s');
          

          【讨论】:

            【解决方案15】:
            date_default_timezone_set('Europe/Warsaw');
            echo("<p class='time'>".date('H:i:s')."</p>");
            echo("<p class='date'>".date('d/m/Y')."</p>");
            

            【讨论】:

              【解决方案16】:

              PHP 的date 函数可以完成这项工作。

              date()

              说明:

              string date(string $format [, int $timestamp = time()])
              

              返回一个根据给定格式字符串格式化的字符串,使用给定的整数时间戳,如果没有给出时间戳,则返回当前时间。

              示例:

              $today = date("F j, Y, g:i a");               // March 10, 2001, 5:16 pm
              $today = date("m.d.y");                       // 03.10.01
              $today = date("j, n, Y");                     // 10, 3, 2001
              $today = date("Ymd");                         // 20010310
              $today = date('h-i-s, j-m-y, it is w Day');   // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
              $today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
              $today = date("D M j G:i:s T Y");             // Sat Mar 10 17:16:18 MST 2001
              $today = date('H:m:s \m \i\s\ \m\o\n\t\h');   // 17:03:18 m is month
              $today = date("H:i:s");                       // 17:16:18
              $today = date("Y-m-d H:i:s");                 // 2001-03-10 17:16:18 (the MySQL DATETIME format)
              

              【讨论】:

                【解决方案17】:
                // Set the default timezone to use. Available since PHP 5.1
                date_default_timezone_set('UTC');
                
                
                // Prints something like: Monday
                echo date("l");
                
                // Prints something like: Monday 8th of August 2016 03:12:46 PM
                echo date('l jS \of F Y h:i:s A');
                
                // Prints: July 1, 2016 is on a Saturday
                echo "July 1, 2016 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2016));
                
                /* Use the constants in the format parameter */
                // Prints something like: Wed, 25 Sep 2013 15:28:57 -0700
                echo date(DATE_RFC2822);
                
                // Prints something like: 2016-07-01T00:00:00+00:00
                echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
                

                【讨论】:

                  【解决方案18】:

                  如果您想获得像 12-3-2016 这样的日期,请将每个日、月和年的值分开,然后复制粘贴以下代码: p>

                  $day = date("d");
                  $month = date("m");
                  $year = date("y");
                  print "date" . $day . "-" . $month . "-" . $year;
                  

                  【讨论】:

                    【解决方案19】:
                    date(format, timestamp)
                    

                    date 函数使用给定的整数时间戳或当前时间(如果没有给出时间戳)返回根据给定格式字符串格式化的字符串。换句话说,timestamp 是可选的,默认为 time() 的值。

                    而且参数是-

                    格式 - 必需。指定时间戳的格式

                    timestamp - (可选)指定时间戳。默认为当前日期和时间

                    如何获得一个简单的日期

                    date()函数所需的格式参数指定如何格式化date (or time)

                    以下是一些常用的日期字符:

                    1. d - 表示月份中的第几天(01 到 31)
                    2. m - 代表一个月(01 到 12)
                    3. Y - 表示年份(四位数)
                    4. l(小写“L”)- 代表星期几

                    也可以在字符之间插入其他字符,例如 "/", ".", or "-",以添加额外的格式。

                    下面的示例以三种不同的方式格式化今天的日期:

                    <?php
                        echo "Today is " . date("Y/m/d") . "<br>";
                        echo "Today is " . date("Y.m.d") . "<br>";
                        echo "Today is " . date("Y-m-d") . "<br>";
                        echo "Today is " . date("l");
                    ?>
                    

                    一些有用的链接

                    【讨论】:

                      【解决方案20】:

                      您也可以使用这种格式:

                      $date = date("d-m-Y");
                      

                      或者

                      $date = date("Y-m-d H:i:s");
                      

                      【讨论】:

                        【解决方案21】:

                        PHP 以秒为单位返回当前时间。您需要将它们格式化为您想要的任何格式。

                        <?php
                            // time() returns current time in seconds
                            $in_seconds = time();
                        
                            // strftime - Format a local time/date according to locale settings
                            echo strftime("%m/%d/%y", $in_seconds);
                        ?>
                        

                        参考:http://php.net/manual/en/function.strftime.php

                        【讨论】:

                          【解决方案22】:
                          <?php
                          // Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
                          // Mountain Standard Time (MST) Time Zone
                          
                          $today = date("F j, Y, g:i a");                 // March 10, 2001, 5:16 pm
                          $today = date("m.d.y");                         // 03.10.01
                          $today = date("j, n, Y");                       // 10, 3, 2001
                          $today = date("Ymd");                           // 20010310
                          $today = date('h-i-s, j-m-y, it is w Day');     // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
                          $today = date('\i\t \i\s \t\h\e jS \d\a\y.');   // it is the 10th day.
                          $today = date("D M j G:i:s T Y");               // Sat Mar 10 17:16:18 MST 2001
                          $today = date('H:m:s \m \i\s\ \m\o\n\t\h');     // 17:03:18 m is month
                          $today = date("H:i:s");                         // 17:16:18
                          $today = date("Y-m-d H:i:s");                   // 2001-03-10 17:16:18 (the MySQL DATETIME format)
                          ?>
                          

                          【讨论】:

                            【解决方案23】:

                            另一种简单的方法是获取当前日期和时间的时间戳。使用 mktime() 函数:

                            $now = mktime(); // Return timestamp of the current time
                            

                            然后您可以将其转换为另一种日期格式:

                            //// Prints something like: Thursday 26th of January 2017 01:12:36 PM
                            echo date('l jS \of F Y h:i:s A',$now);
                            

                            更多日期格式在这里: http://php.net/manual/en/function.date.php

                            【讨论】:

                              【解决方案24】:

                              如果你是孟加拉人,如果你想得到Dhaka 的时间,那么使用这个:

                              $date = new DateTime();
                              $date->setTimeZone(new DateTimeZone("Asia/Dhaka"));
                              $get_datetime = $date->format('d.m.Y H:i:s');
                              

                              【讨论】:

                                【解决方案25】:

                                很简单

                                echo $date = date('Y-m-d H:i:s');

                                【讨论】:

                                  【解决方案26】:
                                  echo date("d-m-Y H:i:sa");
                                  

                                  此代码将获取代码运行所在服务器的日期和时间。

                                  【讨论】:

                                  • 因误导性答案而被否决。不,它不会获取本地计算机的时间,除非您也在本地运行服务器。它将获取服务器的日期和时间。
                                  • @MattWithoos -“此代码将获取“服务器”的日期和时间,他对您所说的“本地机器”只字未提。您不必在“本地”运行您的服务器“ 要么 - 您可以将世界任何地方的服务器设置为您想要的任何时区。您的否决票是完全错误的,没有任何理由
                                  • @NealDavis 你想看看编辑吗?我发布了该评论,建议对不正确的信息进行编辑,同时等待它被批准。现在它已获得批准并显示正确的信息。
                                  • @NealDavis 此外,如果您费心阅读原始帖子,它的字面意思是“此代码将获取本地计算机 (PC) 的日期和时间。”。这完全是误导。
                                  【解决方案27】:

                                  日期格式也取决于:

                                  echo date("d/m/Y H:i:sa"); // 13/04/2017 19:38:15pm
                                  

                                  【讨论】:

                                  • 这很难理解。你能详细说明一下吗?
                                  【解决方案28】:

                                  您可以使用此代码:

                                  <?php
                                      $currentDateTime = date('Y-m-d H:i:s');
                                      echo $currentDateTime;
                                  ?>
                                  

                                  【讨论】:

                                    【解决方案29】:

                                    以下是一些常用的时间字符:

                                    1. h - 小时的 12 小时格式,带前导零(01 到 12)
                                    2. i - 带前导零的分钟(00 到 59)
                                    3. s - 带前导零的秒数(00 到 59)
                                    4. a - 小写的 Ante meridiem 和 Post meridiem(am 或 pm)

                                    获取您的时区

                                    <?php
                                        date_default_timezone_set("America/New_York");
                                        echo "The time is " . date("h:i:sa");
                                    ?>
                                    

                                    检查一下(可选)

                                    <?php
                                        $d = mktime(11, 14, 54, 8, 12, 2014);
                                        echo "Created date is " . date("Y-m-d h:i:sa", $d);
                                    ?>
                                    

                                    日期

                                    <?php
                                        echo "Today is " . date("Y/m/d") . ;
                                        echo "Today is " . date("Y.m.d") . ;
                                        echo "Today is " . date("Y-m-d") . ;
                                        echo "Today is " . date("l");
                                    ?>
                                    

                                    以下是一些常用的日期字符:

                                    1. d - 表示月份中的第几天(01 到 31)
                                    2. m - 代表一个月(01 到 12)
                                    3. Y - 表示年份(四位数)
                                    4. l(小写“L”)- 表示星期几

                                    Source-W3-Schools

                                    【讨论】:

                                    • date("Y/m/d") . ; 中尾随 . 的用途是什么?
                                    • 我猜想连接另一个字符串或变量。感谢您的编辑。 :-)
                                    【解决方案30】:

                                    我们可以使用date函数并设置默认时区:

                                    <?php
                                        date_default_timezone_set("Asia/Kolkata");
                                        echo "Today is " . date("Y/m/d") . "<br>";
                                        echo "Today is " . date("Y.m.d") . "<br>";
                                        echo "Today is " . date("Y-m-d") . "<br>";
                                        echo "Today is " . date("l");
                                        echo "The time is " . date("h:i:sa");
                                    ?>
                                    

                                    【讨论】:

                                      猜你喜欢
                                      • 2011-01-01
                                      • 1970-01-01
                                      • 2019-08-13
                                      • 2017-10-05
                                      • 2013-10-15
                                      • 1970-01-01
                                      • 2015-03-22
                                      • 2012-12-04
                                      相关资源
                                      最近更新 更多