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开发中常用的8个小技巧
Aug 27 PHP
php 404错误页面实现代码
Jun 22 PHP
数据库查询记录php 多行多列显示
Aug 15 PHP
php cli 小技巧
Jun 03 PHP
php连接函数implode与分割explode的深入解析
Jun 26 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
PHP获取文件夹大小函数用法实例
Jul 01 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP连接MySQL数据库并以json格式输出
May 21 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
在 Laravel 中动态隐藏 API 字段的方法
Oct 25 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学习之数组值的操作
2011/04/17 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
php木马webshell扫描器代码
2012/01/25 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
Yii2框架实现数据库常用操作总结
2017/02/08 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
js实现身份证号码验证的简单实例
2014/02/19 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
js实现增加数字显示的环形进度条效果
2017/02/05 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
2017/06/12 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
浅谈VUE-CLI脚手架热更新太慢的原因和解决方法
2018/09/28 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
在Python中处理字符串之ljust()方法的使用简介
2015/05/19 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
python中append实例用法总结
2019/07/30 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
python 实现仿微信聊天时间格式化显示的代码
2020/04/17 Python
阿尔卡特(中国)的面试题目
2014/08/20 面试题
公司财务工作总结的自我评价
2013/11/23 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
啤酒节策划方案
2014/05/28 职场文书
诚信考试标语
2014/06/24 职场文书
小学清明节活动总结
2014/07/04 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
客户答谢会致辞
2015/07/30 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
vue首次渲染全过程
2021/04/21 Vue.js
Pygame如何使用精灵和碰撞检测
2021/11/17 Python
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记