JS关于对时间的处理

来源:互联网 发布:北航软件考研分数线 编辑:程序博客网 时间:2024/05/16 15:06

在做网站的时候经常会遇到一些有关于对时间的处理问题,如果服务器在国内针对的国内的用户群那还好说。

如果你的服务器是放在国外的,那你就要考虑到一些关于时间的问题了。

下面是在magento中增加一个有关于js倒记时的js,这个在商城里面很常见的,代码如下:

<script type="text/javascript"><?php$time_s = time();?>jQuery(function(){var dateTime = new Date();//var nowTime = new Date(<?php echo time()*1000;?>);//var nowTime = new Date("<?php echo date("M d H:i:s Y", ($time_s));?>");            var nowTime = new Date(<?php echo time()*1000;?>);//endTime = new Date("Mar 01 00:00:00 2014");var endTime = new Date(<?php echo strtotime("2014-03-01 00:00:00")*1000;?>);setInterval(function(){  jQuery(".cutdown_time_block").each(function(){var objt = jQuery(this);var nMS=endTime.getTime() - nowTime.getTime();var myD=Math.floor(nMS/(1000 * 60 * 60 * 24));var myH=Math.floor(nMS/(1000*60*60)) % 24;if(myH < 10){myH = '0'+myH;}var myM=Math.floor(nMS/(1000*60)) % 60;if(myM < 10){myM = '0'+myM;}var myS=Math.floor(nMS/1000) % 60;if(myS < 10){myS = '0'+myS;}if(nMS < 0){myD = myH = myM = myS = 0;}var str = "<em class='num_item'>"+myD+"</em>"+"<em class='day_item'>"+"day"+"</em>"+"<em class='num_item'>"+myH+"</em>"+"<em class='space_item'>"+":"+"</em>"+"<em class='num_item'>"+myM+"</em>"+"<em class='space_item'>"+":"+"</em>"+"<em class='num_item'>"+myS+"</em>";objt.html(str);  });  nowTime = new Date(nowTime.valueOf() + 1000);}, 1000);});</script>

在magento中获取时间戳的代码是

date("Y-m-d", Mage::getModel('core/date')->timestamp(time()));

如果你直接是使用time的话,那将会得到GMT时间,因为magento中存储的时间默认是GMT。

而js的Date对象却和本地电脑的时间相同,如果电脑上的时间和标准时间对不上,那这种倒计时的效果可能就会有问题了。

在这里我们在Date对象里传了一个服务器的时间,这样的话即使是你的电脑怎么改时间,这个效果都不会产生变化了。

说一下,Date对象可以传两种参数,一种是字符串,另一种是整型数字(时间戳的1000倍)。两种参数都可以正确的得到时间。

需要注意的是,当你用字符串参数时,

new Date("Mar 01 00:00:00 2014");

如上面的格式,如果你要到2号的话不能写成:Mar 01 24:00:00 2014 ,这样写的话你在一些浏览器中就会报错。



代码很简单,主要就是一个函数setInterval,还有对时间,时区的理解。


0 0
原创粉丝点击