Php 带有DateTime或StrotTime的相对次最近时钟时间单位
我希望从现在开始使用DateTime构造函数或strtotime函数中的格式获取下一个最近的Php 带有DateTime或StrotTime的相对次最近时钟时间单位,php,datetime,strtotime,Php,Datetime,Strtotime,我希望从现在开始使用DateTime构造函数或strtotime函数中的格式获取下一个最近的next{clocktime unit} 让我演示一下这个问题。我正设法在下午4点到达下一个最近的时间 假设现在是下午4:30,下一个最近的下午4点应该是明天下午4点。几天来,它就像下一天{day}一样简单,所以我自然而然地尝试了 (new DateTime("next 4pm"))->format('Y-m-d H:i:s'); // invalid (new DateTime("next 16:
next{clocktime unit}
让我演示一下这个问题。我正设法在下午4点到达下一个最近的时间
假设现在是下午4:30,下一个最近的下午4点应该是明天下午4点。几天来,它就像下一天{day}
一样简单,所以我自然而然地尝试了
(new DateTime("next 4pm"))->format('Y-m-d H:i:s'); // invalid
(new DateTime("next 16:00"))->format('Y-m-d H:i:s'); // invalid
所以,我开始讨论这个问题
(new DateTime(""))->format('Y-m-d H:i:s');
(new DateTime("4pm"))->format('Y-m-d H:i:s');
(new DateTime("+8 hours"))->format('Y-m-d H:i:s');
(new DateTime("+8 hours 4pm"))->format('Y-m-d H:i:s');
这将产生以下输出:
string(19) "2020-06-10 16:47:10" // now
string(19) "2020-06-10 16:00:00" // 4pm
string(19) "2020-06-11 00:47:10" // +8 hours
string(19) "2020-06-11 00:00:00" // +8 hours 4pm ??
其中,正如我所期望的那样,+8小时下午4点
将输出以下内容:
string(19) "2020-06-11 16:00:00"
所以我去了php文档,我找到了这个
相对语句总是在非相对语句之后处理。这使得“2008年7月+1周”和“2008年7月+1周”相等
这条规则的例外情况是:“昨天”、“午夜”、“今天”、“中午”和“明天”。请注意,“明天11:00”和“明天11:00”是不同的。考虑到今天的日期“2008年7月23日”,第一个生成“2008-07-24 11:00”,而第二个生成“2008-07-24 00:00”。原因是这五条语句直接影响当前时间
因此,我尝试了一些利用这些异常的其他方法,但似乎没有得到任何有用的结果。因此,我尝试在网上四处寻找,发现很多人都在尝试类似的方法,但完全不是这样
当然,通过一些额外的处理是可能的,但我对纯1 strotime/DateTime解决方案感兴趣。我想知道我是否遗漏了一些简单的东西,或者这是不可能的。你很接近了。将你的相对时间分成两部分:
2020-06-11 16:00:00
2020-06-11 16:00:00