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


Creating a php date object current date without seconds

我需要一个日期对象,它的时间为当天的12:00:00am(即没有秒)。我把它转换成秒数然后传递给另一个函数。它最终被用于使用date = "someDateHere "从数据库中删除的报表过滤器,并且字段中的挂起秒数正在破坏报表。

我不确定在时间函数的第二个参数中放入什么-留空将使用当前时间,这是我不想要的。我在php文档中找不到例子或任何东西。如果有其他功能可以完成这项工作,我愿意听取建议。这句话应该很简单,但它在影射我。

        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函数和time函数搞砸我的地方。尽管我给它传递了一个dateobject 而没有时间戳,但将其转换为秒并不那么方便,因为插入时间戳作为第二个参数默认为当前时间。

这里有很多可用的选项,因为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.

请参阅手册中的时间格式和相对格式,以获得带有说明的完整格式列表。

哦,我会完全停止使用这些函数,并开始利用DateTime类!

$date = new DateTime("now", new DateTimeZone("America/Detroit"));
echo $date->format("Y-m-d");
http://php.net/manual/en/class.datetime.php

time()不接受参数。你所做的毫无意义。为什么不让strtotime(date('Y-m-d'))获取unix午夜时间戳?

我认为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));
?>