2015-10-16 32 views
1

我有28个独特的事件,每天一个事件。事件在28.之后重复1.是事件。简单的方法来模拟日期在PHP中?

可以说第一个事件是1970-01-01。事件28是1970-01-28

今天是2015-10-16,我该如何找出今天的事件?我如何知道任何给定日期的事件? (仅仅日期>1970-01-01和< 9999-12-31)。

我正在考虑将date转换为timestamp,然后模28 * 24 * 60 * 60,然后将其转换回date,但恐怕可能会有一些余量。有任何想法吗?

回答

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

另一种解决方案是使用unix时间戳来获得秒为单位的日期差异。并且从01-01-1970的定义为零,所有你需要做的是:

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