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 array_multisort()函数的使用札记
Jul 03 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
解析PHP提交后跳转
Jun 23 PHP
php中spl_autoload详解
Oct 17 PHP
yii2.0之GridView自定义按钮和链接用法
Dec 15 PHP
非常重要的php正则表达式详解
Jan 04 PHP
PHP微信红包生成代码分享
Oct 06 PHP
phpcms中的评论样式修改方法
Oct 21 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
Laravel使用支付宝进行支付的示例代码
Aug 16 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
Oct 11 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
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
2006/07/09 PHP
PHP 类相关函数的使用详解
2013/05/10 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
2015/10/09 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
js操作二级联动实现代码
2010/07/27 Javascript
jQuery.fn和jQuery.prototype区别介绍
2013/10/05 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
再分享70+免费的jquery 图片滑块效果插件和教程
2014/12/15 Javascript
JQuery选择器、过滤器大整理
2015/05/26 Javascript
js实现HashTable(哈希表)的实例分析
2016/11/21 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JS去掉字符串前后空格或去掉所有空格的用法
2017/03/25 Javascript
vue之将echart封装为组件
2018/06/02 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
基于Vue中使用节流Lodash throttle详解
2019/10/30 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
Flask之flask-script模块使用
2018/07/26 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
使用Python函数进行模块化的实现
2019/11/15 Python
python实现将range()函数生成的数字存储在一个列表中
2020/04/02 Python
python 进制转换 int、bin、oct、hex的原理
2021/01/13 Python
css3 中实现炫酷的loading效果
2019/04/26 HTML / CSS
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
Sneaker Studio罗马尼亚网站:购买运动鞋
2018/11/04 全球购物
自动化职业生涯规划书范文
2014/01/03 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
初中优秀教师事迹材料
2014/08/18 职场文书
退学证明范本3篇
2014/10/29 职场文书
网络研修随笔感言
2015/11/18 职场文书
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python