猿问

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

我有一个类型为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;


慕斯709654
浏览 97回答 2
2回答

红糖糍粑

您所做的只是将一个字符串附加(连接)到另一个字符串上。$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您可以通过更改日期函数中使用的第一个字符串来更改输出的格式。

慕莱坞森

这更简单,更具可读性$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;说明:我们在今天和明天的指定时间获取时间戳,如果今天的时间戳已经过去,我们使用明天的时间戳。简单的。:)
随时随地看视频慕课网APP
我要回答