25

你如何得到今天的日期,作为一个日期对象?

我正在尝试计算某个开始日期与今天之间的差异。以下将不起作用,因为getdate()返回一个数组而不是日期对象:

$today = getdate();           
$start = date_create('06/20/2012');
$diff = date_diff($start, $today);

echo($today . '<br/>' . $start . '<br/>' . $diff);

输出:

数组 ( [秒] => 8 [分钟] => 1 [小时] => 16 [mday] => 11 [wday] => 1 [mon] => 6 [year] => 2012 [yday] => 162 [工作日] => 星期一 [月] => 六月 [0] => 1339455668 )

DateTime 对象([date] => 2012-06-20 00:00:00 [timezone_type] => 3 [timezone] => America/Los_Angeles)

4

3 回答 3

49
new DateTime('now');

http://www.php.net/manual/en/datetime.construct.php

比较很容易:

$today = new DateTime('now');
$newYear = new DateTime('2012-01-01');

if ($today > $newYear) {

}

操作的编辑 我只需要调用date_default_timezone_set,然后这段代码对我有用。

于 2012-06-11T23:06:31.460 回答
17

要获得天数的差异,请使用以下命令:

$today = new DateTime('today');

此对象中的时间将是 00:00:00

如果您想要小时分钟和秒的差异,请使用:

$now = new DateTime('now');
于 2014-03-26T15:39:32.997 回答
0

我最终使用date_create构造函数(无参数)来获取当前日期。

$diff = date_diff(date_create('06/20/2012'), date_create());
print_r($diff);

输出:

DateInterval 对象 ( [y] => 0 [m] => 0 [d] => 8 [h] => 6 [i] => 30 [s] => 40 [invert] => 1 [days] => 8)

我不知道为什么,但 Mike B 的回答(以及我为DateTime尝试的任何构造函数)在 PHP5 / IIS 中为我​​抛出了一个错误。

于 2012-06-12T00:34:01.923 回答