JS关于对时间的处理

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

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

下面是在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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值