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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
超级简单的php+mysql留言本源码
Nov 11 PHP
php读取mysql乱码,用set names XXX解决的原理分享
Dec 29 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
php数组合并array_merge()函数使用注意事项
Jun 19 PHP
php两种无限分类方法实例
Apr 21 PHP
Mac下php 5升级到php 7的步骤详解
Apr 26 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
Jul 13 PHP
Yii2.0实现的批量更新及批量插入功能示例
Jan 29 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
Feb 28 PHP
laravel model模型处理之修改查询或修改字段时的类型格式案例
Oct 17 PHP
php解析非标准json、非规范json的方式实例
May 10 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
深入解析php模板技术原理【一】
2008/01/10 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
CI(CodeIgniter)模型用法实例分析
2016/01/20 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
js Date概念详细介绍
2013/11/22 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JavaScript第一篇之实现按钮全选、功能
2016/08/21 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
angularjs中ng-attr的用法详解
2016/12/31 Javascript
Node.JS段点续传:Nginx配置文件分段下载功能的实现方法
2018/03/12 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
JS实现面向对象继承的5种方式分析
2018/07/21 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
js如何验证密码强度
2020/03/18 Javascript
微信小程序picker组件两列关联使用方式
2020/10/27 Javascript
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
python文件操作整理汇总
2014/10/21 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python 3.8正式发布,来尝鲜这些新特性吧
2019/10/15 Python
在python中修改.properties文件的操作
2020/04/08 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
HTML5 Canvas玩转酷炫大波浪进度图效果实例(附demo)
2016/12/14 HTML / CSS
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
预备党员思想汇报
2014/01/08 职场文书
职工代表大会主持词
2014/04/01 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
简单租房协议书
2014/10/21 职场文书
简述Java中throw-throws异常抛出
2021/08/07 Java/Android