6

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

我不确定在 time 函数的第二个参数中放入什么 - 将其留空将使用当前时间,这是我不想要的。我在 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 函数搞砸的地方。即使我将一个没有时间戳的日期对象传递给它,将其转换为秒也不太方便,因为它会将时间戳作为默认为当前时间的第二个参数插入。

4

4 回答 4

10

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

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

或以日期时间形式:

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

请参阅手册中的时间格式相关格式以获取带有说明的完整格式列表。

于 2013-03-21T21:13:12.207 回答
2

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

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

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

于 2013-03-21T21:09:06.297 回答
1

time() 不接受任何参数。你在做什么是没有意义的。为什么不只是strtotime(date('Y-m-d'))获取午夜的 unix 时间戳?

于 2013-03-21T21:12:30.920 回答
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));
?>
于 2013-03-21T21:08:02.753 回答