Home > php教程 > php手册 > 正计时的三种方法

正计时的三种方法

WBOY
Release: 2016-06-06 20:08:34
Original
5463 people have browsed it

正计时是指计算一个已过日期距今的时间,反之倒计时就是计算未来某个日子距今的时间.本来在我网站footer的正计时代码是用JS算的,今天想到还可以用别的方法来实现,(同样可以用来倒计时),总结如下: WordPress的 human_diff 函数 PHP的 time() 函数 JS运算(或C#

正计时是指计算一个已过日期距今的时间,反之倒计时就是计算未来某个日子距今的时间.本来在我网站footer的正计时代码是用JS算的,今天想到还可以用别的方法来实现,(同样可以用来倒计时),总结如下:

  1. WordPress的human_diff函数
  2. PHP的time()函数
  3. JS运算(或C#的timespan函数)

WordPress法

wordpress的human_diff函数可以输出智能时间差,用法为<?php human_time_diff( $from, $to ); ?>,其中$from代表开始时间,$to代表截止时间,常用在文章页:

<?php echo '由小蝴蝶发布于'.human_time_diff(get_the_time('U'), current_time('timestamp')).'前'; ?>
Copy after login

需要注意的是:这里需要使用的时间格式为Unix时间戳(Unix timestamp),所以在使用human_diff正计时之前,我们需要把时间转换为Unix时间戳格式,有很多在线转换时间戳的网站,可以Google一下"Unix timestamp".
比如我要计算的是我和小马哥在一起的日子(好酸哦嘻嘻~),2011年9月2号转换为时间戳1314964800,然后是最终代码:

<?php echo '我们已经相爱了'.human_time_diff('1314964800', current_time('timestamp')); ?>
Copy after login

PHP法

用PHP进行时间运算的方法我在前面php判断:在指定日期之后触发事件一文中略提过,没什么好解释的直接上代码了:

<?php $time1=strtotime('2011-09-02');
$time2=time();
$thetime=floor(($time2-$time1)/3600/24) ;//floor()用来取整数位,如果想四舍五入请用round()
echo '我们已经相爱了'.$thetime.'天';
?>
Copy after login

JS法

<script type="text/javascript">
function thediv(timespan){
var result=Math.floor((new Date()-new Date(timespan))/3600000/24);//new Date(timespan)为开始日时间戳,new Date()为今天,同样取整数,或者Math.round四舍五入
document.getElementById("thediv").innerText="我们已经相爱了"+result+"天";
}
var thetime;
thetime=self.setInterval("thediv('2011/09/02')", 0);
</script>
Copy after login

然后在调用此结果的地方加上<div id="thediv"></div>,效果见小蝴蝶footer.
包子发现了这段js存在问题,setInterval会造成重复执行blahblahblah...尼玛这货在学JS,把我虐的掀起,
下面是第二个被包子虐翻的版本,

var thediv = function(timespan2){var result=Math.floor((new Date()-new Date(timespan2))/3600000/24);document.getElementById("thediv").innerText="我们已经相爱了"+result+"天";} 
var thetime=  self.setTimeout(function(){ thediv('2011/09/02') },  0) ;
Copy after login

尼玛包子说我多此一举!他要我给setTimeout参数匿名,人家以为要单独匿下面一行嘛 :cry:
下面是包子改好的版本:

var thetime=self.setTimeout(function(){ var result=Math.floor((new Date()-new Date('2011/09/02'))/3600000/24);document.getElementById("thediv").innerText="我们已经相爱了"+result+"天"; },  0) ; 
Copy after login

老娘下次不写js了

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template