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 相关文章推荐
发挥语言的威力--融合PHP与ASP
Oct 09 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
for循环连续求和、九九乘法表代码
Feb 20 PHP
php使用json_encode对变量json编码
Apr 07 PHP
CodeIgniter CLI模式简介
Jun 17 PHP
PHP实现多文件上传的方法
Jul 08 PHP
基于php实现七牛抓取远程图片
Dec 01 PHP
基于PHP实现简单的随机抽奖小程序
Jan 05 PHP
微信公众平台DEMO(PHP)
May 04 PHP
PHP获取客户端及服务器端IP的封装类
Jul 21 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
使用composer命令加载vendor中的第三方类库 的方法
Jul 09 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
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
建立动态的WML站点(一)
2006/10/09 PHP
php侧拉菜单 漂亮,可以向右或者向左展开,支持FF,IE
2009/10/15 PHP
编写PHP脚本过滤用户上传的图片
2015/07/03 PHP
Thinkphp事务操作实例(推荐)
2017/04/01 PHP
YII框架关联查询操作示例
2019/04/29 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
新浪的图片新闻效果
2007/01/13 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
2010/01/22 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
利用js(jquery)操作Cookie的方法说明
2013/12/19 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
angularjs实现过滤并替换关键字小功能
2017/09/19 Javascript
jQuery插件jsonview展示json数据
2018/05/26 jQuery
JS获取浏览器地址栏的多个参数值的任意值实例代码
2018/07/24 Javascript
layui的select联动实现代码
2019/09/28 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
Nuxt的路由动画效果案例
2020/11/06 Javascript
[52:26]完美世界DOTA2联赛决赛 FTD vs Phoenix 第一场 11.08
2020/11/11 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
python3+PyQt5实现自定义流体混合窗口部件
2018/04/24 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
详解python中递归函数
2019/04/16 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
解决在keras中使用model.save()函数保存模型失败的问题
2020/05/21 Python
Manjaro、pip、conda更换国内源的方法
2020/11/17 Python
护士辞职信范文
2014/01/19 职场文书
创先争优制度
2014/01/21 职场文书
党员学习中共十八大思想报告
2014/09/12 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
2015年生产部工作总结范文
2015/05/25 职场文书