我的代码中有一个问题,有时我需要在当天添加 1 天、2 天甚至 3 天。
我正在使用
$today = strtotime('today');
然后根据假期、周末和其他参数,我可能需要像这样添加天数/工作日
$date = strtotime('+2 weekdays', $today);
或
$date = strtotime('+2 days', $today);
但是,这似乎在当前时间上增加了 24 小时,而理想情况下我需要的是一天中的第一秒。不幸的是,我无法更改今天的时间戳,因为如果它是当前日期,那么它的时间至关重要,但是在添加天数时,它必须是新一天的第一秒。
我个人对这个问题的任何帮助或理解将不胜感激。
日期/时间格式的字符串作为输入来指定所需的时间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
功能的有用站点
您可以从结果时间戳值中减去$timestamp % (24*3600)
;例:
$timestamp = mt_rand(1500000000, 1600000000);
$timestamp -= $timestamp % (24*3600);
echo date('Y-m-d H:i:s', $timestamp);
附言但最好使用DateTime
类。有方法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