在PHP中使用Date进行模数的简单方法?

时间:2015-10-16 12:51:18

标签: php

我有28个独特的活动,每天一个活动。 28之后的事件重复是1.事件再次发生。

让我们说第一个事件是1970-01-01。第28项赛事为1970-01-28

今天是2015-10-16,我如何知道今天应该是什么活动?如何确定任何给定日期应该发生什么事件? (只是日期> 1970-01-01和< 9999-12-31)。

我在考虑将date转换为timestamp,然后以28 * 24 * 60 * 60为模,然后将其转换回date,但我害怕可能会有一些余地。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用DateTime::diff功能,如下所示:

$datetime1 = date_create('1970-01-28');
$datetime2 = date_create('2015-10-16');
$interval = date_diff($datetime2, $datetime1);

/// Get total number of days
$days = $interval->format('%a');

/// Get the remainder of the division by the number of events
$eventNumber = $days % 28;

答案 1 :(得分:1)

另一个解决方案是使用unix时间戳来获取以秒为单位的日期差异。根据定义,自01-01-1970为零,您所要做的就是:

$today = mktime(); // Or $today = mktime(12,0,0,10,16,2015);
$mod = floor($today/86400) % 28;