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模块 Memcached功能多于Memcache
Jun 14 PHP
PHP 透明水印生成代码
Aug 27 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
php上传图片存入数据库示例分享
Mar 11 PHP
PHP 导出Excel示例分享
Aug 18 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
浅谈PHP中Stream(流)
Jun 08 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
php通过PHPExcel导入Excel表格到MySQL数据库的简单实例
Oct 29 PHP
PHP 中使用explode()函数切割字符串为数组的示例
May 06 PHP
PHP读取并输出XML文件数据的简单实现方法
Dec 22 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 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生成略缩图代码
2012/07/16 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
在模板页面的js使用办法
2010/04/01 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JavaScript极简入门教程(三):数组
2014/10/25 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
js转html实体的方法
2016/09/27 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
微信小程序表单验证form提交错误提示效果
2020/06/19 Javascript
Angular中的ng-template及angular 使用ngTemplateOutlet 指令的方法
2018/08/08 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
vue-cli项目代理proxyTable配置exclude的方法
2018/09/20 Javascript
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
python 实时遍历日志文件
2016/04/12 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python网络编程之TCP套接字简单用法示例
2018/04/09 Python
Django中的文件的上传的几种方式
2018/07/23 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python 使用多属性来进行排序
2019/09/01 Python
python安装scipy的步骤解析
2019/09/28 Python
关于numpy中eye和identity的区别详解
2019/11/29 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Django多个app urls配置代码实例
2020/11/26 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
学生档案自我鉴定
2013/10/07 职场文书
军人违纪检讨书
2014/02/04 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
义诊活动总结
2015/02/04 职场文书
业务内勤岗位职责
2015/04/13 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
60句有关成长的名言
2019/09/04 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle