创建一个没有秒的php日期对象当前日期

时间:2013-03-21 21:02:10

标签: php

我需要一个日期对象,其当前时间为凌晨12:00:00(意味着没有秒数)。我将其转换为秒数并将其传递给另一个函数。它最终用于使用数据库中的date =“someDateHere”的报表过滤器,并且该字段中的挂起秒数正在搞砸报表。

我不确定在时间函数中放入第二个参数的内容 - 将其留空将使用当前时间,这是我不想要的。我在php doc中找不到示例或任何内容。如果还有其他功能可以完成这项工作,我愿意接受建议。这应该很简单,但它暗指我。

        date_default_timezone_set('America/Detroit');
        $now = date("Y-m-d 0:0:0");
        echo $now . '<br/>';
        $now = time($now,0);
        echo $now . '<br/>';

提前致谢。

编辑:请注意:我需要将该日期对象转换为秒。这就是时间戳让我失去了strtotime功能和时间功能的地方。即使我传递了一个没有时间戳的日期对象,将它转换为秒也不方便的是将时间戳作为第二个参数插入,默认为当前时间。

4 个答案:

答案 0 :(得分:7)

这里有很多可用的选项,因为PHP接受各种各样的时间格式。

$midnight = strtotime('midnight');
$midnight = strtotime('today');
$midnight = strtotime('12:00am');
$midnight = strtotime('00:00');
// etc.

或以DateTime形式:

$midnight = new DateTime('midnight');
$midnight = new DateTime('today');
$midnight = new DateTime('12:00am');
$midnight = new DateTime('00:00');
// etc.

请参阅手册中的time formatsrelative formats,以获取包含说明的完整格式列表。

答案 1 :(得分:2)

哦,我将完全停止使用这些功能,并开始利用DateTime类!

$date = new DateTime("now", new DateTimeZone("America/Detroit"));
echo $date->format("Y-m-d");

http://php.net/manual/en/class.datetime.php

答案 2 :(得分:1)

time()不带参数。你所做的事情毫无意义。为什么不只是strtotime(date('Y-m-d'))来获取午夜的unix时间戳?

答案 3 :(得分:0)

我认为mktime()正是您所需要的http://www.php.net/manual/en/function.mktime.php

<?php
// Set the default timezone to use. Available as of PHP 5.1
date_default_timezone_set('UTC');

// Prints: July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

// Prints something like: 2006-04-05T01:02:03+00:00
echo date('c', mktime(1, 2, 3, 4, 5, 2006));
?>