我需要一个日期对象,其当前时间为凌晨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功能和时间功能的地方。即使我传递了一个没有时间戳的日期对象,将它转换为秒也不方便的是将时间戳作为第二个参数插入,默认为当前时间。
答案 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 formats和relative formats,以获取包含说明的完整格式列表。
答案 1 :(得分:2)
哦,我将完全停止使用这些功能,并开始利用DateTime类!
$date = new DateTime("now", new DateTimeZone("America/Detroit"));
echo $date->format("Y-m-d");
答案 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));
?>