0

我需要使用 Javascript 来检测本地用户的 UTC 偏移量,然后在我的 cfquery 中为我的大型网站的其余部分使用该 UTC 偏移量。

这是我想运行的自上而下的逻辑。我只需要帮助将 Javascript 数据(UTC 偏移量)从 Javascript 设置到 Coldfusion 变量中,以便它可以在我的 cfquery 的 SQL 中使用。

1.) 页面加载 2.) Ajax 调用简单的 Javascript 来获取用户的 UTC 偏移量 3.) 在 Coldfusion 变量中返回 UTC 偏移量 4.) Coldfusion 变量在 SQL cfquery 中用于调整 UTC 日期以适应用户时区。

4

2 回答 2

0
  1. 首先获取偏移量并发送到coldfusion cfc(假设您使用jquery js库)

    var offsetmin = new Date().getTimezoneOffset(); //以分钟为单位 var offsethr = offsetmin/60; //小时

    $.ajax({
     type: "POST",
     url: WebRoot + "/pathtocfc.cfc?method=createClientOffset",
     data: "offset="+offsethr,
     dataType: "json"
    }).done(function(result){
        //make sure you saved it successfully with your client ip address
    

    });

  2. 接下来在coldfusion中保存偏移量和ip

    <cffunction name="createClientOffset" access="remote" returnformat="JSON">
    <cfargument name="offset" >
    
    <!---get ip address from cgi scope--->
    
    <cftry>
      <!---try to save client ip and offset together using cfquery--->
    </cftry>
    
    </cffunction>
    

3.在随后的页面请求中,调用 UDF 以尝试获取客户端偏移量或在运行查询以返回日期并从 gmt 日期中减去 utc 偏移量之前进行调用。

    <cffunction name="readoffset" access="public">
    <cfargument name="ipaddress" >

    <!---use cfquery to match ipaddress with offset if it doesn't exist then use a default offset or add logic to create one if it doesn't exist--->


      <cfreturn offset />
    </cffunction>
于 2012-05-23T00:51:42.737 回答
0

一种可能的方法是使用 JavaScript 在他们点击的第一页上设置时间戳 cookie。然后在后续页面中使用 cfcookie 引用该 cookie。

var curDateTime = new Date();
var tzoffset = "-" + (curDateTime.getTimezoneOffset()/60);
var expiredate = new Date();
expiredate.setTime(expiredate.getTime()+(120*24*60*60*1000)); // set expire date to 120 from now
document.cookie = "local_tz="+tzoffset+";expires="+expiredate.toGMTString();
于 2012-05-22T17:36:49.817 回答