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

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

答案

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

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

date_default_timezone_set('Australia/Melbourne');

另一个例子是 LA- 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());

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

// 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 5.2.0您也可以使用OOPDateTime()进行操作(当然,如果您更喜欢 OOP):

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

参考:这是一个链接

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

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 的time()返回当前的 Unix 时间戳。这样,您可以使用date()函数将其格式化为所需的格式。

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

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

$date = date('Format String');

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

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

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

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

因此,为了获得可以使用的功能,可以使用date()函数对其进行格式化。

PHP 手册中提供了有关使用date()函数的方法的良好参考。

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

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

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 = 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()函数很有用。

用:

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

有用。