php实现倒计时效果


Posted in PHP onDecember 19, 2015

现在很多的团购网站上都有剩余时间的显示。显示剩余时间可以使用Javascript来实现,但是我们会发现使用Javascript来实现的话不安全,因为Javascript获取的是客户端的时间。比方说,这次团购已经结束了,但是懂技术的访客只要修改他客户端电脑的时间就又显示该商品还可以购买。很明显,这不是我们网站设计的初衷。团购结束了就不可以再购买啦。这里写了一个考试系统剩余时间倒计时的显示代码和大家一起探讨。

实现原理:
PHP获取的是服务器端的时间,我们只要设置考试的开始时间和结束时间及当前时间。如果当前的时间不在我们的考试时间范围内,则显示给考生“当前不在考试时间段!”。如果在考试时间范围内,则获取当前时间,结束时间减掉当前时间就是剩余的时间,将剩余时间格式化输出就是“剩余考试时间:2小时56分32秒”这样的形式。服务器端获得了剩余时间后,我们还要在客户端动态的显示剩余时间的倒计时。这就需要用AJAX来实现了。在开始前大家先熟悉几个函数吧!

PHP函数:
strtotime(); //将任何英文日期转换为时间戳
floor(); //舍去法取整,和int()强制转换相识
json_encode() //对变量进行JSON编码,返回字符串

简单的剩余天数计算:

date_default_timezone_set('Asia/Hong_Kong');
$startDate = '2015-8-11';
$endDate = '2015-8-31';

// 将日期转换为Unix时间戳
$startDateStr = strtotime($startDate);
$endtDateStr = strtotime($endDate);
$total = $endtDateStr-$startDateStr;

$now = strtotime(date('Y-m-d'));
$remain = $endtDateStr-$now;

echo '为期:'.$total/(3600*24).'天<br>';
echo '剩余:'.$remain/(3600*24).'天';

效果:

php实现倒计时效果

简单的剩余时间计算:

date_default_timezone_set('Asia/Hong_Kong');
$startTime = '09:00:00';
$endTime = '18:00:00';

// 将时间转化为unix时间戳
$startTimeStr = strtotime($startTime);
$endTimeStr = strtotime($endTime);
$total = $endTimeStr - $startTimeStr;

$restHours = 1; // 休息1小时

$now = strtotime(date('H:i:s'));
$remain = $endTimeStr - $now;

echo '上班时间:'.($total/3600-$restHours).'小时<br>';
echo '还有:'.floor(($remain/3600)).'小时'.floor($remain/60).'分钟下班';

效果:

php实现倒计时效果

前后端配合实现考试剩余时间:

HTML布局

考试剩余时间:

<span id="hour">00</span>小时<span id="minute">00</span>分<span id="second">00</span>秒

JS脚本

function dealData(id,value){
  var place = document.getElementById(id);
  place.innerHTML = value;
}
window.setInterval(function(){ // 每秒从服务器取一次数据
  var ajax = new Ajax();
  ajax.get("remain_time.php?a="+Math.random(),function(data){
  eval("var dtime = "+data); 
  dealData('hour',dtime.hour);
  dealData('minute',dtime.minute);
  dealData('second',dtime.second);
 });
},1000);

PHP代码:

date_default_timezone_set('PRC');
$start_time = '09:00:00';
$end_time = '18:00:00';
$start_famate_time = strtotime($start_time);//开始时间转化为时间戳
$end_famate_time = strtotime($end_time); //结束时间转化为时间戳
$now_time = time();
if($end_famate_time < $now_time || $start_time > $now_time){
 echo '当前不在考试的时间范围内!';
 exit;
}
$remain_time = $end_famate_time-$now_time; //剩余的秒数
$remain_hour = floor($remain_time/(60*60)); //剩余的小时
$remain_minute = floor(($remain_time - $remain_hour*60*60)/60); //剩余的分钟数
$remain_second = ($remain_time - $remain_hour*60*60 - $remain_minute*60); //剩余的秒数
echo json_encode(array('hour'=>$remain_hour,'minute'=>$remain_minute,'second'=>$remain_second));

以上就是php实现倒计时的关键代码,希望对大家的学习有所帮助。

PHP 相关文章推荐
实用函数7
Nov 08 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
比较时间段一与时间段二是否有交集的php函数
May 31 PHP
php header Content-Type类型小结
Jul 03 PHP
PHP+Mysql+jQuery实现发布微博程序 jQuery篇
Oct 08 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
PHP判断是否连接上网络的方法
Jul 01 PHP
PHP MySql增删改查的简单实例
Jun 21 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
php Session无效分析资料整理
Nov 29 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
Yii2框架自定义验证规则操作示例
Feb 08 PHP
Thinkphp实现自动验证和自动完成
Dec 19 #PHP
详解WordPress中过滤链接与过滤SQL语句的方法
Dec 18 #PHP
基于ThinkPHP实现批量删除
Dec 18 #PHP
thinkphp实现163、QQ邮箱收发邮件的方法
Dec 18 #PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 #PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 #PHP
详解WordPress中给链接添加查询字符串的方法
Dec 18 #PHP
You might like
9个PHP开发常用功能函数小结
2011/07/15 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
深入理解PHP中mt_rand()随机数的安全
2017/10/12 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
解决Extjs上传图片无法预览的解决方法
2012/03/22 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
Jquery动态更改一张位图的src与Attr的使用
2013/07/31 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
浅谈Angular.js中使用$watch监听模型变化
2017/01/10 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
python数据类型判断type与isinstance的区别实例解析
2017/10/31 Python
Django contenttypes 框架详解(小结)
2018/08/13 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
2020/04/21 Python
Python中内建模块collections如何使用
2020/05/27 Python
基于Python实现粒子滤波效果
2020/12/01 Python
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
幼儿园大班家长评语
2014/04/17 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2015年公司工作总结
2015/04/25 职场文书
运动会通讯稿300字
2015/07/20 职场文书
2016党员入党决心书
2015/09/22 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
Redis实现一个账号只能登录一个设备
2022/04/19 Redis