正计时是指计算一个已过日期距今的时间,反之倒计时就是计算未来某个日子距今的时间.本来在我网站footer的正计时代码是用JS算的,今天想到还可以用别的方法来实现,(同样可以用来倒计时),总结如下: WordPress的 human_diff 函数 PHP的 time() 函数 JS运算(或C#
正计时是指计算一个已过日期距今的时间,反之倒计时就是计算未来某个日子距今的时间.本来在我网站footer的正计时代码是用JS算的,今天想到还可以用别的方法来实现,(同样可以用来倒计时),总结如下:
- WordPress的
human_diff
函数
- PHP的
time()
函数
- JS运算(或C#的
timespan
函数)
WordPress法
wordpress的human_diff函数可以输出智能时间差,用法为<?php human_time_diff( $from, $to ); ?>
,其中$from代表开始时间,$to代表截止时间,常用在文章页:
1 | <?php echo '由小蝴蝶发布于' .human_time_diff(get_the_time( 'U' ), current_time( 'timestamp' )). '前' ; ?>
|
登入後複製
需要注意的是:这里需要使用的时间格式为Unix时间戳(Unix timestamp),所以在使用human_diff
正计时之前,我们需要把时间转换为Unix时间戳格式,有很多在线转换时间戳的网站,可以Google一下"Unix timestamp".
比如我要计算的是我和小马哥在一起的日子(好酸哦嘻嘻~),2011年9月2号转换为时间戳1314964800,然后是最终代码:
1 | <?php echo '我们已经相爱了' .human_time_diff( '1314964800' , current_time( 'timestamp' )); ?>
|
登入後複製
PHP法
用PHP进行时间运算的方法我在前面php判断:在指定日期之后触发事件一文中略提过,没什么好解释的直接上代码了:
1 2 3 4 5 | <?php $time1 = strtotime ( '2011-09-02' );
$time2 =time();
$thetime = floor (( $time2 - $time1 )/3600/24) ;
echo '我们已经相爱了' . $thetime . '天' ;
?>
|
登入後複製
JS法
1 2 3 4 5 6 7 8 | <script type= "text/javascript" >
function thediv(timespan){
var result=Math. floor (( new Date ()- new Date (timespan))/3600000/24);
document.getElementById( "thediv" ).innerText= "我们已经相爱了" +result+ "天" ;
}
var thetime;
thetime=self.setInterval( "thediv('2011/09/02')" , 0);
</script>
|
登入後複製
然后在调用此结果的地方加上<div id="thediv"></div>
,效果见小蝴蝶footer.
包子发现了这段js存在问题,setInterval会造成重复执行blahblahblah...尼玛这货在学JS,把我虐的掀起,
下面是第二个被包子虐翻的版本,
1 2 | 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) ;
|
登入後複製
尼玛包子说我多此一举!他要我给setTimeout参数匿名,人家以为要单独匿下面一行嘛
下面是包子改好的版本:
1 | var thetime=self.setTimeout( function (){ var result=Math. floor (( new Date ()- new Date ( '2011/09/02' ))/3600000/24);document.getElementById( "thediv" ).innerText= "我们已经相爱了" +result+ "天" ; }, 0) ;
|
登入後複製
老娘下次不写js了
原文地址:正计时的三种方法, 感谢原作者分享。