php倒计时出现-0情况的解决方法
本文实例讲述了php倒计时出现-0情况的解决方法。分享给大家供大家参考,具体如下:
问题:今天有反馈,说倒计时出现了-0天的情况,我看了看程序,卧槽,当时怎么没测试到
原因是PHP的逻辑判断中 -0 > 0
分析:贴出错的代码
$starttime = 1362585600; //3.7凌晨 $nowtime = 1362618921;//3.7早上 $off = ceil(($starttime - $nowtime)/86400); //倒计时 if ($off < 0) { $off = 0; } $b = $starttime - $nowtime; $c = $b/86400; $d = ceil($c); var_dump(array('start-now'=>$b), array('float_day'=>$c), array('int_day'=>$d), array('off'=>$off)); if (-0 < 0) { echo '-0 < 0'; } else { echo '-0 > 0'; }
输出:
array 'start-now' => int -33321 array 'float_day' => float -0.385659722222 array 'int_day' => float -0 array 'off' => float -0 -0 > 0
过程:
当开始时间和当前时间是同一天时,上边的计算过程由于 -0 > 0 所以会出现 off = -0 的情况
改进:
$starttime = 1362585600; //3.7凌晨 $nowtime = 1362618921;//3.7早上 if (($starttime - $nowtime) < 0) { $off = 0; } else { $off = ceil(($starttime - $nowtime)/86400); }
PS:本站还提供了一个Unix时间戳转换工具,非常实用,提供给大家参考:
Unix时间戳(timestamp)转换工具:
http://tools.jb51.net/code/unixtime
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php日期与时间用法总结》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
相关推荐
-
php结合redis实现高并发下的抢购、秒杀功能的实例
抢购.秒杀是如今很常见的一个应用场景,主要需要解决的问题有两个: 1 高并发对数据库产生的压力 2 竞争状态下如何解决库存的正确减少("超卖"问题) 对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis. 重点在于第二个问题 常规写法: 查询出对应商品的库存,看是否大于0,然后执行生成订单等操作,但是在判断库存是否大于0处,如果在高并发下就会有问题,导致库存量出现负数 <?php $conn=mysql_connect("localho
-
PHP获取毫秒级时间戳的方法
本文实例讲述了PHP获取毫秒级时间戳的方法.分享给大家供大家参考.具体分析如下: PHP本身没有提供获取毫秒级时间戳的函数,java里面可以通过gettime();获取.如果是要与java写的某些程序进行高精度的毫秒级的对接通信,则需要使用PHP输出毫秒级的时间.之前我采取的方法是采用不精准的方式,也就是在PHP原生的时间函数后面加上一个三位数字构成.为获取更为精准的毫秒级时间戳可以使用下面的代码: <?php function getMillisecond() { list($t1, $t2)
-
PHP+JS实现的商品秒杀倒计时用法示例
本文实例讲述了PHP+JS实现的商品秒杀倒计时用法.分享给大家供大家参考,具体如下: <?php //php的时间是以秒算.js的时间以毫秒算 date_default_timezone_set('PRC'); //date_default_timezone_set("Asia/Hong_Kong");//地区 //配置每天的活动时间段 $starttimestr = "2016-3-29 8:10:00"; $endtimestr = "2016-
-
php+js实现倒计时功能
js部分 复制代码 代码如下: setInterval("time_controller()",1000);function time_controller(){ $(".time_val").each(function(){ var time_id = "time_show_"+$(this).attr('for'); var time_val= $(this).attr('value');
-
浅析php如何实现App常用的秒发功能
前言 想象一下,我们平常发朋友圈的时候,N张图片配上文字,嗖的一下就发出去了,不带任何拖泥带水的那种,体验感觉好爽~. 但是我们停下来用技术手段思考一下,这可能吗?有些2G网络最多也就几十K网速,我们的图片随便一张都几M,即使压缩过也有几百K,怎么可能瞬间发出消息呢? 现在想想,是不是有些诡异呢~ 其实吧,众多社交软件(微博,微信)都是用了一种秒发机制.他并不是真的先去发送然后发送完毕再告诉你发送成功,而是直接告诉你发送成功,然后后台再偷偷去上传你发的东西,所以在网速不好的时候我们会经常发现一个
-
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
php计算两个时间相差的天数.小时数.分钟数.秒数 PHP中计算两个时间相差的天数.小时数.分钟数.秒数不如其它语言方便,但搞清了PHP中时间的表示方法后也很简单.本文章向大家讲解php如何计算时间相差.需要的码农可以参考一下. 先看下面这个网上给的例子: //$startdate是开始时间,$enddate是结束时间 <?php $startdate="2011-3-15 11:50:00"; $enddate="2012-12-12 12:12:12";
-
PHP 类商品秒杀计时实现代码
要求要有小时分钟秒的实时倒计时的显示,用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准). 其实这和很多的考试等系统的时间限制功能同样的要求. 总不能用ajax每秒都获取服务器时间吧,所以实时倒计时一定要用javascript实现.这很简单,网上一大把的例子. 现在问题是解决用户端修改日期时间对我们的显示的影响. 解决的办法是计算出用户端的时间和服务器的时间差,这样问题的完成解决了. 这样只需要运行一次php,实时倒计时的时间就和服务器的时间同步了. 理论是同步的,但实际测试
-
时间戳与时间相互转换(php .net精确到毫秒)
/** 获取当前时间戳,精确到毫秒 */ function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } /** 格式化时间戳,精确到毫秒,x代表毫秒 */ function microtime_format($tag, $time) { list($usec, $sec) = explode(".",
-
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 if(库存数量 > 0) { //生成订单... sql2:库存-1 } 当没有并发时,上面的流程看起来是如此完美,假设同时两个人下单,而库存只有1个了,在sql1阶段两个人查询到的库存都是>0的,于是最终都执行了sql2,库存最后变为-1,超售了,要么补库存,要么等用户投诉吧. 解决这个问题比较流行的思路: 1.用额外的单进程处理一个队列,下单请求放到队列里,一个个处理,就不会有并发的问题了,但是要
-
php实时倒计时功能实现方法详解
本文实例讲述了php实时倒计时功能实现方法.分享给大家供大家参考,具体如下: 这几天公司要做一个限时购物的功能.这就要做到倒计时,要有实时的倒计时. 要求: 1) 要有小时分钟秒的实时倒计时的显示 2)用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准) 其实这和很多的考试等系统的时间限制功能同样的要求. 解决思路: 1)总不能用ajax每秒都获取服务器时间吧. 所以实时倒计时一定要用javascript实现.这很简单.网上一大把的例子. 2)现在问题是解决用户端修改日期时间对
-
php实现倒计时效果
现在很多的团购网站上都有剩余时间的显示.显示剩余时间可以使用Javascript来实现,但是我们会发现使用Javascript来实现的话不安全,因为Javascript获取的是客户端的时间.比方说,这次团购已经结束了,但是懂技术的访客只要修改他客户端电脑的时间就又显示该商品还可以购买.很明显,这不是我们网站设计的初衷.团购结束了就不可以再购买啦.这里写了一个考试系统剩余时间倒计时的显示代码和大家一起探讨. 实现原理: PHP获取的是服务器端的时间,我们只要设置考试的开始时间和结束时间及当前时间.
-
PHP获取指定时间段之间的 年,月,天,时,分,秒
核心代码: Class Utils { /** * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出来的数据格式转换成时间秒数 * @param string $datetime */ public function fmDatetime($datetime) { $year = substr($datetime,0,4); $month = substr($datetime,5,2); $day = substr($datetime,
-
php获取当前时间的毫秒数的方法
php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,该函数返回一个array,包含两个元素,一个是秒数,一个是小数表示的毫秒数,借助此函数,可以很容易定义一个返回毫秒数的函数,例如: 复制代码 代码如下: function getMillisecond() { list($s1, $s2) = explode(' ', microtime()); return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) *
随机推荐
- 如何在iphon IOS设备上使用二维码
- JS对象与json字符串格式转换实例
- 正则 js分转元带千分符号详解
- 基于JavaScript实现简单的随机抽奖小程序
- Android开发之图形图像与动画(五)LayoutAnimationController详解
- PHP实现的通过参数生成MYSQL语句类完整实例
- centos6.7安装python2.7.11的具体方法
- java实现十六进制字符unicode与中英文转换示例
- Nginx解决转发地址时跨域的问题
- 通过批处理bat设置系统环境变量的实现代码
- MongoDB的下载、安装与部署方法
- 【MongoDB for Java】Java操作MongoDB数据库
- javaweb页面附件、图片下载及打开(实现方法)
- jQuery实现进度条效果代码
- APACHE 配置文件中文版 httpd.conf FOR Apache 2.2.13
- Android 动态注册监听网络变化实例详解
- python3.0 模拟用户登录,三次错误锁定的实例
- C字符串操作函数的实现详细解析
- iOS中block变量捕获原理详析
- windows环境下修改pip镜像源的方法详解