获取服务器端时间的处理思路和代码 涉及PHP JavaScript Yii

写在前面
因为js只能操作客户端的东西。在客户端时刻显示并更新服务器的时间应该是不可能的,因为会由于网络延迟的因素使得时间不精确。

这个是和截止时间进行比较的。以服务器时间为基准,和截止日期进行比较判断。如果在截止日期之前,则可以进行提交保存的操作,否则提示已经超时。
采取的方式是在用户提交时在服务器端的后台程序中进行判断,而不是借助前端的JS。

另外如果是考试倒计时的话,可以采用先从服务器端获取时间,然后开始计数。页面刷新或者退出的时候对累计的时间也进行提交,并存储在服务器中。服务器端下一次加载操作页面的时候,同时传递上一次累计的时间,页面对时间开始继续计数,直到到达考试时间。

其余网上给的参考:
打个比方,可以使用ajax每秒钟获取服务器的时间,然后再显示出来,但是可能这个用户的网络延迟比较厉害,他请求的这个时间过了两三秒才返回给客户端,那这样更新时间就不精确了。
也可以这样,第一次从服务器那里获取时间,然后再客户端用js,每秒累加数,就是以获取服务器的那个时间为起掉,用客户端代码每秒累加这个时间

最后补充下:
PHP时间获取函数是从服务器端的时间获取;
JS时间获取函数是从客户端的时间获取;
如果两者时间没有统一,那么简单的凭借客户端的时间来判断是否超期是不现实的做法;

还有你们可能要的代码

html:
<input type="button" class="btn btn-default" role="button" value="保存" 
                           onclick ="homeworkButton('save')" />&emsp; 
                    <input type="button" class="btn btn-default" role="button" value="提交" 
                                   onclick ="homeworkButton('submit')" /> 


//javaScript
//用的ajax请求
function homeworkButton(buttonType){      
        $.ajax({  
            url: "/model/actionName",   
            type : "POST",  
            data : { "aaa":aaaa,//你的想传递的参数
                    },  
            dataType : "text",                                      
            async : true,   
            success : function(mydata) {//服务器端返回的结构mydata            
                if(mydata == false){
                    //提交保存时已经和服务器的时间相比,超出截止日期,超期了                                        
                }else{
                    //提交保存成功后续操作
                }
            },                                     
            error : function() {  //提交失败了
                alert("calc failed");  
            }  
        });
}

//PHP:
//我用的是Yii框架
//这段是上面ajsx请求的url对应的model下的Controller里面actionName函数的部分内容
[Yii 1.1版本控制器视图与ajax的使用方式](http://blog.csdn.net/xujing19920814/article/details/70228796)
 if($dealModel->DeadlineJudge($deadline)){//未超期
            //如果用户点击“保存”,若是新开始的数据库新增一条记录,并设置状态为保存,如果是“提交”修改的数据库update记录
        $response = $model->functionName($params);                    
 }else{
     $response["datebase"] = false;
 }

echo $response["datebase"];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值