我怎样才能让 strtotime 到一天的开始
How can i make strtotime go to the beginning of a day
我的代码中有一个问题,有时我需要在当前日期上加上 1 天、2 天甚至 3 天。
我正在使用
$today = strtotime('today');
然后根据假期、周末和其他参数,我可能需要像这样添加天数/工作日
$date = strtotime('+2 weekdays', $today);
或
$date = strtotime('+2 days', $today);
但是,这似乎在当前时间上增加了 24 小时,而我理想情况下需要的是一天的第一秒。不幸的是,我无法更改今天的时间戳,因为如果它是当天那么它的时间很关键,但是在添加天数时它需要是新一天的第一秒。
我个人对此问题的任何帮助或理解都将不胜感激。
您可以从结果时间戳值中减去$timestamp % (24*3600)
;
示例:
$timestamp = mt_rand(1500000000, 1600000000);
$timestamp -= $timestamp % (24*3600);
echo date('Y-m-d H:i:s', $timestamp);
P.S。但最好使用 DateTime
class。有方法 setTime()
:
$datetime = new DateTime();
$datetime->modify('+2 day');
$datetime->setTime(0, 0, 0, 0);
$timestamp = $datetime->getTimestamp();
echo date('Y-m-d H:i:s', $timestamp);
$date = new DateTime();
$date->add(new DateInterval('P"your needed days"D'));
echo $date->format('Y-m-d');
eg:'P2D'
OUTPUT:::2019-01-27
在这个'P'中指定日期中的时间段然后可以加上年(Y),月(M)和日(D)然后对于时间,需要指定时间(T)然后小时 (H)、分钟 (i 或 M) 和秒 (S)。
参考下面http://php.net/manual/en/dateinterval.format.php
您可以使用 date/time 格式的字符串作为 strtotime
的输入来指定您想要的时间。如果您将其作为第二个参数添加到 strtotime
中,则可以获得您想要的时间。
$date = strtotime('+2 weekdays', strtotime(date('Y-m-d 00:00:00', $today));
不过还有更简单的选择。您也可以只问 strtotime
午夜。
$date = strtotime('midnight +2 weekdays');
或特定时间。
$date = strtotime('01:23 +2 weekdays');
https://strtotime.co.uk/ 是测试 strtotime
功能的有用站点
我的代码中有一个问题,有时我需要在当前日期上加上 1 天、2 天甚至 3 天。
我正在使用
$today = strtotime('today');
然后根据假期、周末和其他参数,我可能需要像这样添加天数/工作日
$date = strtotime('+2 weekdays', $today);
或
$date = strtotime('+2 days', $today);
但是,这似乎在当前时间上增加了 24 小时,而我理想情况下需要的是一天的第一秒。不幸的是,我无法更改今天的时间戳,因为如果它是当天那么它的时间很关键,但是在添加天数时它需要是新一天的第一秒。
我个人对此问题的任何帮助或理解都将不胜感激。
您可以从结果时间戳值中减去$timestamp % (24*3600)
;
示例:
$timestamp = mt_rand(1500000000, 1600000000);
$timestamp -= $timestamp % (24*3600);
echo date('Y-m-d H:i:s', $timestamp);
P.S。但最好使用 DateTime
class。有方法 setTime()
:
$datetime = new DateTime();
$datetime->modify('+2 day');
$datetime->setTime(0, 0, 0, 0);
$timestamp = $datetime->getTimestamp();
echo date('Y-m-d H:i:s', $timestamp);
$date = new DateTime();
$date->add(new DateInterval('P"your needed days"D'));
echo $date->format('Y-m-d');
eg:'P2D'
OUTPUT:::2019-01-27
在这个'P'中指定日期中的时间段然后可以加上年(Y),月(M)和日(D)然后对于时间,需要指定时间(T)然后小时 (H)、分钟 (i 或 M) 和秒 (S)。 参考下面http://php.net/manual/en/dateinterval.format.php
您可以使用 date/time 格式的字符串作为 strtotime
的输入来指定您想要的时间。如果您将其作为第二个参数添加到 strtotime
中,则可以获得您想要的时间。
$date = strtotime('+2 weekdays', strtotime(date('Y-m-d 00:00:00', $today));
不过还有更简单的选择。您也可以只问 strtotime
午夜。
$date = strtotime('midnight +2 weekdays');
或特定时间。
$date = strtotime('01:23 +2 weekdays');
https://strtotime.co.uk/ 是测试 strtotime