Php 如何创建间隔时间算法?

Php 如何创建间隔时间算法?,php,Php,时间线是:上午12:00到晚上11:59。现在一些用户在早上7点左右登录到页面,这样系统就什么也不做了。我需要做的是把这个时间线分成三部分 1 part : 8:00 am - 11:59 am 2 part : 12:00 pm - 3:59 pm 3 part : 4:00 pm - 7:59 pm 若用户在上午9:00登录,他可以看到代码,他可以把这个代码激活一些功能。如果用户在下午2:00左右登录,那么系统将显示其他代码等 所以我的想法是在数据库中以三个间隔创建表,系统将在午夜左右为每

时间线是:上午12:00到晚上11:59。现在一些用户在早上7点左右登录到页面,这样系统就什么也不做了。我需要做的是把这个时间线分成三部分

1 part : 8:00 am - 11:59 am
2 part : 12:00 pm - 3:59 pm
3 part : 4:00 pm - 7:59 pm
若用户在上午9:00登录,他可以看到代码,他可以把这个代码激活一些功能。如果用户在下午2:00左右登录,那么系统将显示其他代码等

所以我的想法是在数据库中以三个间隔创建表,系统将在午夜左右为每个部分创建新代码:

Table
id | interval_start | interval_stop
1 | 8:00 am | 11:59 am
2 | 12:00 pm | 3:59 pm
3 |  4:00 pm | 7:59 pm

Table code
id | id_interval | code
1 | 1 | 432432
2 | 2 | 654553
3 | 3 | 654646

所以我可以设置cron并用create新代码生成一些PHP文件。当用户进入应用程序时,他会看到新的代码。你觉得这个主意怎么样?这将是好的和最佳的?

是的,我认为这是个好主意,现在根据代码,您可以显示代码

一个解决方案是计算午夜和当前时间之间的秒数,如下所示:

$interval1_start = 60 * 60 * 8; // 8am
$interval1_end = 60 * 60 * 12 -1; // 11:59:59am
$interval2_start = 60 * 60 * 12; // 12pm
$interval2_end = 60 * 60 * 16 -1; // 15:59:59pm
$interval3_start = 60 * 60 * 15; // 15pm
$interval3_end = 60 * 60 * 20 -1; // 15:59:59pm

$init_time = strtotime(date('Y-m-d'));
$cur_time = time();

$diff = $cur_time - $init_time;

if ($diff >= $interval1_start && $diff <= $interval1_end) {
    echo 'code 1';
}
elseif ($diff >= $interval2_start && $diff <= $interval2_end) {
    echo 'code 2';
}
elseif ($diff >= $interval3_start && $diff <= $interval3_end) {
    echo 'code 3';
}
$interval1\u start=60*60*8;//上午8点
$interval1_end=60*60*12-1;//上午11:59:59
$interval2_start=60*60*12;//下午12点
$interval2_end=60*60*16-1;//下午15:59:59
$interval3_start=60*60*15;//下午15点
$interval3_end=60*60*20-1;//下午15:59:59
$init_time=strottime(日期('Y-m-d');
$cur_time=time();
$diff=$cur_time-$init_time;

如果($diff>=$interval1_start&&$diff=$interval2_start&&$diff=$interval3_start&&$diff您可以将日期拆分为86400秒,因此从28800到43140是8:00-11:59,以检查用户在该时间间隔内是否可以获取当前日期时间戳并从当前时间戳中删除。例如:

date_default_timezone_set('Europe/Riga'); // Don't forget to set correct GMT
// cause server time can be other.

$today = getdate();
$seconds=$today['hours']*3600+$today['minutes']*60+$today['seconds'];
// or use time()-strtotime(date('Y-m-d'))

$intervals=array(
array('start'=>0,'end'=>3600), // 00:00:00-01:00:00
array('start'=>3601,'end'=>7200), // 01:00:01-02:00:00
);

$in_interval=false;
$in_key=-1;
foreach($intervals as $key => $value) {
  if($seconds>=$value['start'] && $seconds<=$value['end']) {
   $in_interval=true;
   $in_key=$key;
   break;
  }
}

if($in_interval) {
  echo 'Visitor is in interval, ID:'.$in_key;
} else {
  echo 'Visitor is not in interval.';
}
date\u default\u timezone\u set('Europe/Riga');//别忘了设置正确的GMT
//原因服务器时间可以是其他时间。
$today=getdate();
$seconds=$today['hours']*3600+$today['minutes']*60+$today['seconds'];
//或者使用time()-strotime(日期('Y-m-d'))
$interval=数组(
数组('start'=>0,'end'=>3600),//00:00:00-01:00:00
数组('start'=>3601,'end'=>7200),//01:00:01-02:00:00
);
$in_interval=false;
$in_key=-1;
foreach($key=>$value的间隔){

如果($seconds>=$value['start']&&$seconds谢谢你,我会在我结束时告诉你。谢谢你的帮助。在php<5.0.5的演示中,结果不同:)但我知道原因。谢谢你的帮助。我需要测试所有的可能性