PHP使用正确的日期设置时间

时间:2019-11-25 22:23:34

标签: php datetime

我正在使用我的PHP脚本来设置日期和时间。我需要一些帮助来设置正确的日期,因为在我的代码中,当我有两个不同的时间06:0020:00时,它将显示当前日期和时间。我发现我的代码设置日期是错误的,因为我设置的06:00的时间应该是第二天的日期,而时间20:00的设置应该是今天的日期。当前时间是21:18pm

$autoresponder_date的输出:

2019-11-25 06:00
2019-11-25 20:00

$get_time的输出:

06:00
20:00

代码如下:

$auto_responders = $link->prepare('SELECT * FROM autoresponder WHERE campaign = ? ORDER BY id ASC');
$auto_responders->execute([$campaign]);
$auto_responders->setFetchMode(PDO::FETCH_ASSOC);
$auto_responders = $auto_responders->fetch(PDO::FETCH_ASSOC);
$get_time = $auto_responders['send_time'];

if ($get_time >= strtotime('00:00'))
{
    $autoresponder_date = date('Y-m-d', strtotime($get_time . ' +1 day'));
}
else
{
   $autoresponder_date = date('Y-m-d', strtotime($get_time));
}
$send_time = $autoresponder_date . ' '. date('H:i ', strtotime($get_time));

能否请您举一个例子,说明如何设置时间06:0020:00的日期,就像时间是06:00,而我的当前时间是凌晨12点,然后设置为第二天的日期,时间为20:00,那么它应该设置当天的凌晨12点之前的日期吗?

谢谢。

1 个答案:

答案 0 :(得分:-1)

最好使用DateTime。我如下更改了您的代码,但您的情况尚不清楚。 如果您无法管理……否则请评论您的情况,然后我将更新答案。 以便将文本转换为DateTiem:

$get_time = '2019-11-25 06:00';
$get_time = DateTime::createFromFormat('Y-m-d H:i',$get_time);
//now $get_time is an object

您的代码如下:

$auto_responders = $link->prepare('SELECT * FROM autoresponder WHERE campaign = ? ORDER BY id ASC');
$auto_responders->execute([$campaign]);
$auto_responders->setFetchMode(PDO::FETCH_ASSOC);
$auto_responders = $auto_responders->fetch(PDO::FETCH_ASSOC);
$get_time = $auto_responders['send_time'];

$get_time = DateTime::createFromFormat('Y-m-d H:i',$get_time);
if ($get_time >= new DateTime())
{
    $autoresponder_date = $get_time->modify('+1 day')->format('Y-m-d');
}
else
{
   $autoresponder_date = $get_time->format('Y-m-d');
}
$send_time = $autoresponder_date . ' '. $get_time->format('H:i');