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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
php 上一篇,下一篇文章实现代码与原理说明
May 09 PHP
防止本地用户用fsockopen DDOS攻击对策
Nov 02 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
PHP命名空间(namespace)的动态访问及使用技巧
Aug 18 PHP
PHP正则验证Email的方法
Jun 15 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
全面解析PHP操作Memcache基本函数
Jul 14 PHP
PHP仿微信多图片预览上传实例代码
Sep 13 PHP
PHP PDOStatement::getAttribute讲解
Feb 01 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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实现文件下载详解
2014/11/27 PHP
php导出生成word的方法
2015/12/25 PHP
PHP 7.0.2 正式版发布
2016/01/08 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
jquery validator 插件增加日期比较方法
2010/02/21 Javascript
javascript 闭包疑问
2010/12/30 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
JavaScript地理位置信息API
2016/06/11 Javascript
前端 Vue.js 和 MVVM 详细介绍
2016/12/29 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
js实现蒙版效果
2020/01/11 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
使用Python的PEAK来适配协议的教程
2015/04/14 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
django框架模板中定义变量(set variable in django template)的方法分析
2019/06/24 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Python爬虫之Selenium实现窗口截图
2020/12/04 Python
wordpress添加Html5的表单验证required方法小结
2020/08/18 HTML / CSS
UGG雪地靴荷兰官网:UGG荷兰
2016/09/09 全球购物
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
开发中都用到了那些设计模式?用在什么场合?
2014/08/21 面试题
幼儿园毕业家长感言
2014/02/10 职场文书
公务员四风问题对照检查材料整改措施
2014/09/26 职场文书
成本会计岗位职责
2015/02/03 职场文书
董事长助理工作总结2015
2015/07/23 职场文书
我的生日感言
2015/08/03 职场文书
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
tomcat的catalina.out日志按自定义时间格式进行分割的操作方法
2022/04/02 Servers
动画《朋友游戏》公开佐藤友生绘制的开播纪念绘
2022/04/06 日漫
在虚拟机中安装windows server 2008的图文教程
2022/06/28 Servers