提问人: 提问时间:1/23/2009 最后编辑:Peter Mortensen 更新时间:11/21/2023 访问量:3126317
如何在 PHP 中获取当前日期和时间?
How do I get the current date and time in PHP?
答:
您可以使用 $_SERVER['REQUEST_TIME']
变量(从 PHP 5.1.0 开始可用)或 time()
函数来获取当前的 Unix 时间戳。
评论
time()
date_default_timezone_set("your-particular-timezone");
PHP 的 time() 返回当前的 Unix 时间戳。有了这个,您可以使用 date() 函数根据您的需要对其进行格式化。
$date = date('Format String', time());
正如保罗在评论中提到的,第二个论点是多余的。以下代码片段等同于上面的代码片段:
$date = date('Format String');
评论
您可以同时使用 $_SERVER['REQUEST_TIME']
变量或 time()
函数。这两者都返回一个 Unix 时间戳。
大多数情况下,这两种解决方案将产生完全相同的 Unix 时间戳。它们之间的区别在于,返回最近服务器请求的时间戳并返回当前时间。这可能会在精度上产生细微的差异,具体取决于您的应用,但在大多数情况下,这两种解决方案都应该足够了。$_SERVER['REQUEST_TIME']
time()
根据上面的示例代码,一旦获得 Unix 时间戳,您将需要格式化此信息。未格式化的 Unix 时间如下所示:1232659628
因此,为了获得有效的东西,您可以使用 date()
函数来格式化它。
PHP手册中提供了有关使用该功能的方法的良好参考。date()
例如,以下代码返回如下所示的日期:01/22/2009 04:35:00 pm
echo date("m/d/Y h:i:s a", time());
评论
$_SERVER['REQUEST_TIME']
用:
$date = date('m/d/Y h:i:s a', time());
它有效。
评论
时间会经过您的服务器时间。一个简单的解决方法是在调用 date(
) 或 time()
函数之前使用 date_default_timezone_set
手动设置时区。
我在澳大利亚墨尔本,所以我有这样的东西:
date_default_timezone_set('Australia/Melbourne');
或者另一个例子是洛杉矶 - 美国:
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');
<?php
echo "<b>".date('l\, F jS\, Y ')."</b>";
?>
像这样的印刷品
2012年12月09日星期日
从 PHP 开始,你可以使用 DateTime()
类:5.2.0
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();
$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 获取当前日期时间 (NOW),有两种常见的方法可以获取当前日期。要使用 PHP 获取当前日期时间(现在),您可以将该类与任何 PHP 版本一起使用,或者最好将该类与 PHP >= 5.2 一起使用。date
datetime
此处提供了各种日期格式表达式。
使用日期的示例
此表达式将以 格式返回 NOW。Y-m-d H:i:s
<?php
echo date('Y-m-d H:i:s');
?>
使用 datetime 类的示例
此表达式将以 格式返回 NOW。Y-m-d H:i:s
<?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)
date(format, timestamp)
该函数返回一个字符串,该字符串使用给定的整数时间戳或当前时间(如果未给出时间戳)返回根据给定格式字符串格式化的字符串。换句话说,是可选的,默认为 time() 的值。date
timestamp
参数是 -
format - 必需。指定时间戳的格式
timestamp -(可选)指定时间戳。默认值为当前日期和时间
如何获得一个简单的约会
函数的必需格式参数指定如何格式化 .date()
date (or time)
以下是一些通常用于日期的字符:
- d - 表示月份中的某一天(01 到 31)
- m - 表示一个月(01 到 12)
- Y - 表示年份(四位数字)
- 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");
?>
一些有用的链接
- gmdate() - 格式 GMT/UTC 日期/时间
- idate() - 格式 本地时间/日期为整数
- getdate() - 获取 日期/时间信息
- getlastmod() - 获取最后一页修改的时间
- mktime() - 获取 Unix 日期的时间戳
- strftime() - 格式 根据区域设置的本地时间/日期
- time() - 返回电流 Unix 时间戳
- strtotime() - 将任何英文文本日期时间描述解析到 Unix 中 时间戳
- 预定义的 DateTime 常数
您也可以使用此格式:
$date = date("d-m-Y");
或
$date = date("Y-m-d H:i:s");
<?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 PM
echo 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;
?>
获取当前时间和日期的最佳方法是通过 PHP 中的 date 函数:
$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');
此处是不同的时区列表。
通常,这个日期函数对每个人都有用:date(“Y/m/d”);
但时间是不同的,因为时间函数取决于 PHP 版本或系统日期。
所以可以这样使用它来获得我们自己的时区:
$date = new DateTime('now', new DateTimeZone('Asia/Kolkata'));
echo $date->format('H:m:s');
此功能显示 24 小时时间。
评论
很简单
date_default_timezone_set('Asia/Kolkata');
$date = date('m/d/Y H:i:s', time());
评论
对于新的PHP程序员来说,他们可能会混淆为什么有很多方法可以获取当前日期和时间,以及在他们的项目中使用哪一个。
1. date
方法(PHP 4、PHP 5、PHP 7)
这是在 php 中获取日期和时间的非常常见且非常简单的方法。
// 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 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');
// Prints: July 1, 2000 is on a Saturday
echo "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 -0700
echo date(DATE_RFC2822);
// prints something like: 2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
你可以在这里了解更多信息
2. DateTime
类 (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. 碳日期时间套餐
如果您使用的是 Composer、Laravel、Symfony 或任何类型的框架,这是获取日期和时间的最佳方式。此外,这个包扩展了 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'
你可以在这里了解更多信息
希望这会有所帮助,如果您知道任何其他获取日期和时间的方法,请随时编辑答案。
评论
您所在的国家/地区时区:支持的时区列表
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
评论
$date = date('m/d/Y h:i:s a', time());