【发布时间】:2010-10-03 00:09:15
【问题描述】:
哪个 PHP 函数可以返回当前日期/时间?
【问题讨论】:
-
TLDR;
$date = date('m/d/Y h:i:s a', time()); -
看起来我们无法获取系统访问该站点的时间,除非使用 javascript。对于 PHP,我们可以设置一个固定的时区来获取该时区的当前时间。
哪个 PHP 函数可以返回当前日期/时间?
【问题讨论】:
$date = date('m/d/Y h:i:s a', time());
您可以使用$_SERVER['REQUEST_TIME'] variable(自 PHP 5.1.0 起可用)或time() function 来获取当前的 Unix 时间戳。
【讨论】:
time()函数返回的时间戳与时区无关。 (所以之前调用date_default_timezone_set("your-particular-timezone"); 是没有效果的。)
您可以同时使用 $_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'] ?
用途:
$date = date('m/d/Y h:i:s a', time());
有效。
【讨论】:
时间将按您的服务器时间计算。一个简单的解决方法是在调用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());
那么所有时间都将是您刚刚设置的时区:)
【讨论】:
// 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。
【讨论】:
我发现在 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 月 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();
【讨论】:
Datatime命名空间的使用;我不记得 2013 年的情况是否如此,而且我已经多年没有编写任何 PHP 代码了。无论如何,您的建议似乎是正确的,所以再次感谢。
$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 很有用。
【讨论】:
参考:这里是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)
【讨论】:
根据文章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');
?>
【讨论】:
如果您想要不同的时间尺度,请使用:
$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.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));
【讨论】:
如果您想获得像 12-3-2016 这样的日期,请将每个日、月和年的值分开,然后复制粘贴以下代码: p>
$day = date("d");
$month = date("m");
$year = date("y");
print "date" . $day . "-" . $month . "-" . $year;
【讨论】:
date(format, timestamp)
date 函数使用给定的整数时间戳或当前时间(如果没有给出时间戳)返回根据给定格式字符串格式化的字符串。换句话说,timestamp 是可选的,默认为 time() 的值。
而且参数是-
格式 - 必需。指定时间戳的格式
timestamp - (可选)指定时间戳。默认为当前日期和时间
date()函数所需的格式参数指定如何格式化date (or time)。
以下是一些常用的日期字符:
也可以在字符之间插入其他字符,例如 "/", ".", 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");
?>
【讨论】:
您也可以使用这种格式:
$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 settings
echo strftime("%m/%d/%y", $in_seconds);
?>
【讨论】:
<?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
【讨论】:
如果你是孟加拉人,如果你想得到Dhaka 的时间,那么使用这个:
$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;
?>
【讨论】:
以下是一些常用的时间字符:
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");
?>
以下是一些常用的日期字符:
【讨论】:
date("Y/m/d") . ; 中尾随 . 的用途是什么?
我们可以使用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");
?>
【讨论】: