为了账号安全,请及时绑定邮箱和手机立即绑定

如何从现在开始下次发生,在 php 中提交?

如何从现在开始下次发生,在 php 中提交?

PHP
慕斯709654 2022-05-27 14:56:04
我有一个类型为time. 我想要做的是从那一刻开始获取时间now,如果现在是时间,如果2019-11-26 23:50:00输入字段的值22:30:00,我应该得到一个日期2019-11-27 22:30:00。如何在 PHP 中实现这一点?简而言之,根据给定的示例获取下一次出现22:30:00的日期时间戳。2019-11-27 22:30:00找到答案,但我们可以进一步优化代码吗?$a = explode(':', date('H:i:s', strtotime($validateData['time'])));        $str = '+'.$a[0].' hours '.$a[1].' minutes '.$a[2].' seconds';        $trigger_at = date(date('Y-m-d H:i:s', strtotime( $str, strtotime($validateData['date']))));        return $trigger_at;
查看完整描述

2 回答

?
红糖糍粑

TA贡献1815条经验 获得超6个赞

您所做的只是将一个字符串附加(连接)到另一个字符串上。


$time = "22:30:00"; // This is the time you have

$date = date("Y-m-d"); // Right now in yyyy-mm-dd format.

$newdatetime = $date.' '.$time;

这将为您提供当前日期,并附有提供的时间。您可以使用以下方法将其转换回时间戳:


$timestamp = strtotime($newdatetime);

下面的答案基于原始问题,其中时间被认为是从现在开始的偏移量。将其留在这里只是为了避免删除大量代码。


函数 strtotime 很容易使用。但是,它不接受 HH:MM:SS 格式。所以,你必须改变字符串。我会这样做:


$time = "22:30:00"; // This is the time you have

$a = explode(':', $time);

$str = '+'.$a[0].' hours '.$a[1].' minutes '.$a[2].' seconds'; // This breaks it into separate numbers with labels.

$date = date("Y-m-d h:i:s", strtotime($str)); // The adjusted date

您可以通过更改日期函数中使用的第一个字符串来更改输出的格式。


查看完整回答
反对 回复 2022-05-27
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

这更简单,更具可读性


$time = "21:30:00"; // Time from input

$today = date("Y-m-d $time");

$tomorrow = date("Y-m-d H:i:s", strtotime($today)+86400);

$date = strtotime($today) < strtotime("now") ? $tomorrow : $today;

说明:我们在今天和明天的指定时间获取时间戳,如果今天的时间戳已经过去,我们使用明天的时间戳。简单的。:)


查看完整回答
反对 回复 2022-05-27
  • 2 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信