我如何使strtotime进入一天的开始

时间:2019-01-25 11:00:18

标签: php strtotime

我的代码中有一个问题,有时我需要在当天添加1天,2天甚至3天。

我正在使用

$today = strtotime('today');

然后根据假期,周末和其他参数,我可能需要像这样添加天数/工作日

$date = strtotime('+2 weekdays', $today);

$date = strtotime('+2 days', $today);

但是,这似乎比当前时间增加了24小时,而我理想的时间是一天的第一秒。不幸的是,我无法更改今天的时间戳,因为如果它是当前日期,则它的时间至关重要,但是添加日期时,它必须是新日期的第一秒。

对于我个人对此问题的任何帮助或理解,将不胜感激。

3 个答案:

答案 0 :(得分:2)

您可以使用日期/时间格式的字符串作为 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 :(得分:1)

您可以从结果时间戳值main()中减去; 示例:

void demo();

P.S。但是最好使用$timestamp % (24*3600)类。有方法$timestamp = mt_rand(1500000000, 1600000000); $timestamp -= $timestamp % (24*3600); echo date('Y-m-d H:i:s', $timestamp);

DateTime

答案 2 :(得分:0)

$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) ,min(i或M)和sec(S)。 请参阅下面的http://php.net/manual/en/dateinterval.format.php