正计时的三种方法

正计时是指计算一个已过日期距今的时间,反之倒计时就是计算未来某个日子距今的时间.本来在我网站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’)).’前’; ?>

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

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

PHP法

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

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

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>

然后在调用此结果的地方加上<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) ;

尼玛包子说我多此一举!他要我给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) ; 

老娘下次不写js了

LIKE OR SHARE IT:

admin发表于Code目录下,标签为,转载请保留链接

TOP DOWN
发表评论

您必须 [ 登录 ] 才能发表留言!

  1. 沙 发 xsinger

    沙发

    三月 24, 2013 12:40:21
  2. 板 凳 Android

    二楼

    三月 24, 2013 12:51:55
  3. 地 板 Android

    三楼 待会再看

    三月 24, 2013 12:52:19
  4. 地 毯 张书杨

    今天速度倒是很快

    三月 24, 2013 12:52:53
  5. 地 面 张书杨

    网站运行时间统计用的多,文章和评论发布时间显示也有用得到,JS法倒是第一接触到。

    三月 24, 2013 12:57:04
  6. 地 下 Android

    话说移动版没有出现。。。。。。。。。。

    三月 24, 2013 12:59:58
  7. 7 楼 跑调的包子

    沙发(•‿•)

    三月 24, 2013 13:27:57
  8. 8 楼 axiu

    更新狂。我一脸惊讶的盯着你边栏的新头像~ :er:

    三月 24, 2013 15:17:07
  9. 9 楼 小蝴蝶

    尼玛星期天你们都上哪疯去了 这是逼我自己开楼吗

    三月 24, 2013 16:07:53
  10. 10 楼 chojemmy

    正需要。最近在codecademy学js

    三月 24, 2013 16:21:17
  11. 11 楼 DruidFY

    哦豁豁,居然能看懂…

    三月 24, 2013 16:31:13
  12. 12 楼 xsinger

    这篇文章写的还是很有条理的,有点进步

    三月 24, 2013 16:35:06
  13. 13 楼 我的名字叫麒

    原来是程序,我以为是现实生活中的什么窍门

    三月 24, 2013 16:43:21
  14. 14 楼 跑调的包子

    我晕,要博主亲自盖楼呀?

    三月 24, 2013 17:15:25
  15. 15 楼 不亦乐乎

    一天一篇,对自己的要求是不是太高了。

    三月 24, 2013 18:13:36
  16. 16 楼 Arch!tect

    分明不是接触代码半年的节奏嘛╮(╯_╰)╭

    三月 24, 2013 18:14:16
  17. 17 楼 山野愚人居

    感觉php版本的最简单哈

    三月 24, 2013 18:54:52
  18. 18 楼 郑永

    我感觉你这篇灵感是不是跟我那篇文章有联系,过几天发布,你就来个倒计时了。

    三月 24, 2013 21:00:40
  19. 19 楼 郑永

    看完文章我发现我敏感了,呵呵。你是不折不扣码农啊。

    三月 24, 2013 21:06:13
  20. 20 楼 Android

    最后一句话经典。。我以后绝对不学php。。。

    三月 24, 2013 23:20:53
  21. 21 楼 xsinger

    包子大神发威了~~ :huai:

    三月 25, 2013 00:37:45
  22. 22 楼 Tokin

    完全不会JS

    三月 25, 2013 12:58:51
  23. 23 楼 airoschou

    JS好复杂的说~还是PHP的简洁明了

    三月 25, 2013 13:03:33
  24. 24 楼 Android

    Android你好
    邮箱又挂了,自己看足迹吧,哭
    2013-03-24 17:37:44+

    :ku: :ku:

    三月 25, 2013 13:44:46
  25. 25 楼 xsinger

    100被抢了~~

    三月 25, 2013 14:33:22
  26. 26 楼 夜枫

    只有php能弱弱看明白一点~~ :han: 代码控~~代码控~~

    三月 25, 2013 22:35:50
  27. PingBacks: 1