现在很多的团购网站上都有剩余时间的显示。显示剩余时间可以使用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).'天';

简单的剩余时间计算:

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).'分钟下班';

前后端配合实现考试剩余时间:

HTML布局

考试剩余时间:

js:

<span id="hour">00</span>小时<span id="minute">00</span>分<span id="second">00</span>秒

 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));

转载于:https://www.cnblogs.com/xiaogou/p/9224040.html

php实现倒计时效果相关推荐

  1. html自动刷新倒计时,基于JavaScript实现自动更新倒计时效果

    实现倒计时效果需要掌握js中的两个知识点: 1.setTimeout函数 每隔1秒钟更新秒钟时间 2.Date对象 计算时间差 下面贴出 元旦倒计时代码 example.html //定义计时器,每隔 ...

  2. python七段数码管设计图案-python实现七段数码管和倒计时效果

    8是典型的七段数码管的例子,因为刚好七段都有经过,这里我写的代码是从1开始右转. 这是看Mooc视频写的一个关于用七段数码管显示当前时间 # -*-coding:utf-8 -*- import tu ...

  3. android 列表倒计时,Android利用RecyclerView实现列表倒计时效果

    最近面试时,面试官问了一个列表倒计时效果如何实现,现在记录一下. 运行效果图 实现思路 实现方法主要有两个: 1.为每个开始倒计时的item启动一个定时器,再做更新item处理: 2.只启动一个定时器 ...

  4. python怎么让游戏倒计时_Python如何让倒计时效果的在固定区域刷新

    time_remain是实现倒计时效果,但是如何把它固定在一行的指定区域呢? 不干扰其他区域的显示呢? 最后输出这样的信息,最右边的是总时长,但是倒计时效果出现在最左边,如果不预留 ' '*5 空格会 ...

  5. 注册/找回密码等功能中发送手机验证码后倒计时效果的实现(基于vue)

    注册/找回密码等功能中发送手机验证码后倒计时效果的实现,基于vue.element-ui <template><el-button size="small" ty ...

  6. python七段数码管倒计时_python实现七段数码管和倒计时效果

    8是典型的七段数码管的例子,因为刚好七段都有经过,这里我写的代码是从1开始右转. 这是看Mooc视频写的一个关于用七段数码管显示当前时间 # -*-coding:utf-8 -*- import tu ...

  7. js页面倒计时7天 java_javascript实现倒计时效果

    本文实例为大家分享了javascript实现倒计时效果的具体代码,供大家参考,具体内容如下 首先先写一个布局 #numbers p { position: absolute; font-size: 1 ...

  8. android倒计时动画特效,Android仿活动时分秒倒计时效果

    本文实例为大家分享了Android时分秒倒计时效果的具体代码,供大家参考,具体内容如下 从mian.xml下手: xmlns:tools="http://schemas.android.co ...

  9. php活动倒计时代码,JavaScript实现活动倒计时效果的代码分享

    这篇文章主要为大家详细介绍了基于JavaScript实现活动倒计时效果,距离活动时间还剩多少,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了js倒计时效果的具体代码,供大家参考 ...

  10. android中倒计时动画,简单实现Android倒计时效果

    本文实例为大家分享了Android倒计时效果的具体代码,供大家参考,具体内容如下 需求: a.在后台添加时,如果是今日直播,则需要添加开始时间(精确到秒): b.离开始时间超过1天,显示为:" ...

最新文章

  1. python 集合的使用
  2. CCF 202104 Python
  3. 一个即将毕业的软件工程大学生的感悟
  4. Thinkpad产品预装Win7系统一键恢复方法介绍
  5. 22.敏捷估计与规划——Why Agile Planning Works笔记
  6. 国内2大Git代码托管网站
  7. 十六进制转八进制(java)
  8. Magento教程 19:客户评论的审核与发布! (Pending Reviews)
  9. 服务器怎么打开本地电脑文件夹,如何在云服务器上打开本地文件夹
  10. AQS功能及源码详解
  11. 我的Python之路:浏览器模拟
  12. 1.大数据架构详解:从数据获取到深度学习 --- 大数据的本质
  13. hdu1002——A + B Problem II
  14. 如何修改android模拟器上的IMEI、IMSI、SIM card serial number
  15. html5读delphi数据,Delphi HTML解析器
  16. VectorDraw Web JS 9.9 Crack
  17. UG软件使用10大技巧,将会大大提升工作效率
  18. php 监听 扫描枪,Android监听扫描枪内容(一)
  19. uniapp 连接夜神模拟器调试
  20. vivo X9s的USB调试模式在哪里,打开vivo X9sUSB调试模式的经验

热门文章

  1. 使用snmp4j实现Snmp功能(二)
  2. python算法书推荐-你也能看得懂的Python算法书
  3. Qt 数据库操作(一)
  4. 2022.3.27彩叶草
  5. [CODEVS 3037] 线段覆盖 5
  6. TextVQA论文汇总
  7. oracle简写sql,Oracle通过sqlplus编辑sql命令
  8. java内部类文件,Java内部类学习
  9. Linux下pwn从入门到放弃,pwn从入门到放弃第六章——简单ROP
  10. 2020-12-15 IEEE写作格式