如何在PHP中获取当前日期和时间?

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

2939868 次浏览

您可以使用#0变量(从PHP 5.1.0开始可用)或#1函数来获取当前的Unix时间戳。

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

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

正如Paolo在评论中提到的,第二个参数是多余的。以下片段等效于上面的片段:

$date = date('Format String');

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

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

根据上面的示例代码,一旦获得unix时间戳,您将需要格式化此信息。未格式化的unix时间如下所示:1232659628

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

使用date()函数的方法的一个很好的参考位于PHP手册中。

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

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

用途:

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

它奏效了。

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

我在墨尔本,澳大利亚所以我有这样的东西:

date_default_timezone_set('Australia/Melbourne');

另一个例子是LA-美国

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

然后所有的时间都将是你刚刚设置的时区:)

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

有关时区参考,请参阅支持的时区列表

我发现在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');
<?phpecho "<b>".date('l\, F jS\, Y ')."</b>";?>

像这样的指纹

2012年12月9日,星期日

从PHP5.2.0开始,您可以使用DateTime()类:

use \Datetime;
$now = new DateTime();echo $now->format('Y-m-d H:i:s');    // MySQL datetime formatecho $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 wayecho $now->getTimezone();
 $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()函数很有用。

参考:这里是一个链接

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

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)

根据文章如何使用PHP获取当前日期时间(现在),有两种常见的方法来获取当前日期。要使用PHP获取当前日期时间(现在),您可以在任何PHP版本中使用date类,或者更好的是使用PHP>=5.2的datetime类。

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

使用日期的示例

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

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

使用datetime类的示例

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

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

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

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

设置您的时区:

date_default_timezone_set('Asia/Calcutta');

然后调用日期函数

$date = date('Y-m-d H:i:s');
date_default_timezone_set('Europe/Warsaw');echo("<p class='time'>".date('H:i:s')."</p>");echo("<p class='date'>".date('d/m/Y')."</p>");

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

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)
// Set the default timezone to use. Available since PHP 5.1date_default_timezone_set('UTC');

// Prints something like: Mondayecho date("l");
// Prints something like: Monday 8th of August 2016 03:12:46 PMecho date('l jS \of F Y h:i:s A');
// Prints: July 1, 2016 is on a Saturdayecho "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 -0700echo date(DATE_RFC2822);
// Prints something like: 2016-07-01T00:00:00+00:00echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

如果您想获取像12-3-2016这样的日期,请分隔每一天、月和年的值,然后复制粘贴以下代码:

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

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

参数是-

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

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

如何获得一个简单的约会

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

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

  1. d-表示月份的日期(01到31)
  2. m-表示一个月(01到12)
  3. Y-表示一年(四位数字)
  4. l(小写'L')-表示星期几

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

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

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

一些有用的链接

您也可以使用此格式:

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

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

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

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

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

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

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

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

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

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

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

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

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

其非常简单

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

echo date("d-m-Y H:i:sa");

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

日期格式也取决于:

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

您可以使用此代码:

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

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

  1. h-一小时的12小时格式,带前导零(01到12)
  2. i-带前导零的分钟(00至59)
  3. s-带前导零的秒(00到59)
  4. a-小写的前子午线和后子午线(am或pm)

获取您的时区

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

对于日期

<?phpecho "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-学校

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

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

获取当前时间和日期的最佳方法是通过PHP中的日期函数

$date = date('FORMAT'); // FORMAT E.g.: Y-m-d H:i:s
$current_date = date('Y-m-d H:i:s');

使用Unix时间戳:

$now_date = date('FORMAT', time()); // FORMAT Eg : Y-m-d H:i:s

要设置服务器时区:

date_default_timezone_set('Asia/Calcutta');

一个不同的时区列表是这里

Linux服务器时间和PHP time()时区差异如下:

<?phpputenv("TZ=Asia/Kabul");$t = time();echo date('d/m/Y H:i:sa', $t);?>

通常,date的这个函数对每个人都很有用:日期(“Y/m/d”);

但是时间是不同的,因为时间函数取决于PHP版本或系统日期。

所以可能像这样使用它来获得我们自己的时区:

$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));echo $date->format('H:m:s');

此功能显示24小时时间。

echo date('y-m-d'); // Today

这将返回今天的日期。

非常简单

date_default_timezone_set('Asia/Kolkata');$date = date('m/d/Y H:i:s', time());

对于新的PHP程序员可能会混淆为什么有很多方法来获取当前日期和时间以及在他们的项目中使用哪一个。

1.#0方法(PHP 4、PHP 5、PHP 7)

这是在php中获取日期和时间的最常见和最简单的方法。

// set the default timezone to use. Available since PHP 5.1date_default_timezone_set('UTC');

// Prints something like: Mondayecho date("l");
// Prints something like: Monday 8th of August 2005 03:12:46 PMecho date('l jS \of F Y h:i:s A');
// Prints: July 1, 2000 is on a Saturdayecho "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* use the constants in the format parameter */// prints something like: Wed, 25 Sep 2013 15:28:57 -0700echo date(DATE_RFC2822);
// prints something like: 2000-07-01T00:00:00+00:00echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));

您可以在这里中了解更多信息

2.#0类(PHP 5>=5.2.0, PHP 7)

当您想将PHP与OOP一起使用时,这是获取日期和时间的最佳方式。

<?php// Specified date/time in your computer's time zone.$date = new DateTime('2000-01-01');echo $date->format('Y-m-d H:i:sP') . "\n";
// Specified date/time in the specified time zone.$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in your computer's time zone.$date = new DateTime();echo $date->format('Y-m-d H:i:sP') . "\n";
// Current date/time in the specified time zone.$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));echo $date->format('Y-m-d H:i:sP') . "\n";
// Using a UNIX timestamp.  Notice the result is in the UTC time zone.$date = new DateTime('@946684800');echo $date->format('Y-m-d H:i:sP') . "\n";
// Non-existent values roll over.$date = new DateTime('2000-02-30');echo $date->format('Y-m-d H:i:sP') . "\n";?>

您可以在这里中了解更多信息

3. Carbon Date时间包

如果您使用的是作曲家laravelSymfony或任何类型的框架,这是获取日期和时间的最佳方式。此外,这个包扩展了php中的DateTime类,因此您可以使用Datetime类中的所有方法。这是像laravel这样的内置框架,所以你不必单独安装它。

printf("Right now is %s", Carbon::now()->toDateTimeString());printf("Right now in Vancouver is %s", Carbon::now('America/Vancouver')); // automatically converted to string$tomorrow = Carbon::now()->addDay();$lastWeek = Carbon::now()->subWeek();
// Carbon embed 823 languages:echo $tomorrow->locale('fr')->isoFormat('dddd, MMMM Do YYYY, h:mm');echo $tomorrow->locale('ar')->isoFormat('dddd, MMMM Do YYYY, h:mm');
$officialDate = Carbon::now()->toRfc2822String();
$howOldAmI = Carbon::createFromDate(1975, 5, 21)->age;
$noonTodayLondonTime = Carbon::createFromTime(12, 0, 0, 'Europe/London');
$internetWillBlowUpOn = Carbon::create(2038, 01, 19, 3, 14, 7, 'GMT');
if (Carbon::now()->isWeekend()) {echo 'Party!';}echo Carbon::now()->subMinutes(2)->diffForHumans(); // '2 minutes ago'

您可以在这里中了解更多信息

希望这能有所帮助,如果您知道任何其他获取日期和时间的方法,请随时编辑答案。

您可以简单地使用此代码来获取当前日期和时间

echo date('r', time());

只需使用:date("Y-m-d H:i:s")这将给你你的日期和时间,如2020-08-22 12:20:30这。在date()函数之前添加date_default_timezone_set("your time zone")以获取区域/区域的时间日期。在这里你可以找到你的时区

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

  • d-表示月份的哪一天(01到31)

  • m-表示一个月(01到12)

  • Y-表示一年(四位数)

  • l(小写'L')-表示星期几

  • H-一小时的24小时格式(00到23)

  • h-一小时的12小时格式,带前导零(01到12)

  • i-带前导零的分钟(00到59)

  • s-带前导零的秒(00到59)

  • a-小写的前子午线和后子午线(am或pm)

例子:

echo "Today " . date("Y/m/d") ;echo "time " . date("h:i:sa");

您的国家时区:支持的Timezones列表

date_default_timezone_set('Asia/Kolkata');
$dateYmd = date('Y-m-d');echo "Current Year Month Day: $dateYmd";

当前年份月日:2022-01-03

$datehms = date('h:i:s');echo "Current Hour Minute Second: $datehms";

当前时间分钟秒:11:05:38

你可以这样做:

$now = strtotime(date('Y-m-d H:i:s')); // = Now

有关完整格式化选项,请参阅文档:https://www.php.net/manual/en/function.date.php

使用#0#1来格式化日期,即date('Y-m-d H:i:s');,您可以将这些作为可选格式:

来源:face:::格式化页面。

格式字符特性介绍示例返回值
------
d每月的哪一天,带前导零的2位数字01至31
D一天的文本表示,三个字母周一到周日
j没有前导零的月份的哪一天1至31
l(小写'L')星期几的完整文本表示周日到周六
NISO 8601星期几的数字表示1(星期一)至7(星期日)
S英语序数后缀表示月份的某一天,2个字符st, nd, rd或th.与j配合得很好
w星期几的数字表示0(星期日)至6(星期六)
z一年中的哪一天(从0开始)0到365
------
WISO 8601周数年份,周从周一开始示例:42(一年中的第42周)
------
F一个月的完整文本表示,例如一月或三月1月至12月
m一个月的数字表示,前导零01到12
M一个月的简短文本表示,三个字母1月至12月
n一个月的数字表示,没有前导零1到12
t给定月份的天数28到31
------
L不管是闰年1如果是闰年,否则为0。
oISO 8601周数年份。这与Y具有相同的值,除了如果ISO周数(W)属于上一年或下一年,则使用该年份。例子:1999年或2003年
X年份的扩展完整数字表示形式,至少4位数字,-表示年份BCE,+表示年份CE。示例:-0055,+0787,+1999,+10191
x如果需要,可以使用扩展的完整数字表示,或者如果可能的话使用标准的完整数字表示(如Y)。至少四位数字。BCE年份以-为前缀。超过(包括)10000的年份以+为前缀。示例:-0055,0787,1999,+10191
Y年份的完整数字表示,至少4位数字,其中-表示BCE年份。示例:-0055、0787、1999、2003、10191
y一年的两位数表示例子:99或03
时间------
一个小写前子午线和后子午线am或pm
一个大写前子午线和后子午线上午或下午
B斯沃琪互联网时间000到999
g不带前导零的12小时格式1到12
g24小时格式的一小时没有前导零0到23
h一小时的12小时格式,带前导零01到12
H24小时格式的一小时与前导零00到23
带前导零的分钟00至59
带前导零的秒00到59
u注意date()将始终生成000000,因为它接受了一个int参数,而DateTime::format()如果DateTime是用微秒创建的,则不支持微秒。示例:654321
v毫秒。同样的音符适用于你。示例:654
时区------
e时区标识符示例:UTC、GMT、大西洋/亚速尔群岛
I(大写i)日期是否在夏令时1如果是夏令时,0否则。
O格林威治时间(GMT)小时和分钟之间无冒号的差异示例:+0200
P与格林威治时间(GMT)的差异,冒号在小时和分钟之间示例:+02:00
p与P相同,但返回Z而不是+00:00(从PHP 8.0.0开始可用)示例:Z或+02:00
T时区缩写,如果已知;否则为GMT偏移量。示例:EST、MDT、+05
Z以秒为单位的时区偏移。UTC以西的时区偏移始终为负,UTC以东的时区偏移始终为正。-43200到50400
完整日期/时间------
cISO 8601日期2004-02-12 T 15:19:21+00:00
r"RFC 2822/"RFC 5322格式化日期例:Thu,21 Dec 2000 16:01:07+0200
U自Unix时代以来的几秒钟(1970年1月1日00:00:00 GMT)参见time()