代码之家  ›  专栏  ›  技术社区  ›  gen_Eric

将PHP中的所有日期转换为本地时间

  •  1
  • gen_Eric  · 技术社区  · 14 年前

    运行PHP脚本的服务器设置为UTC。我似乎想不出一种方法来设置浏览器时区的所有日期。所有显示的日期都使用PHP的 date() 功能。

    我知道通过JavaScript getTimezoneOffset() 函数,我可以得到浏览器的当前UTC偏移量(在我的情况下是-4)。如何告诉PHP使用这个偏移量?我可以用 date_default_timezone_set() ,但如何将偏移量(例如-4)转换为时区字符串(例如America/NewúYork)?

    注意:服务器正在运行PHP 5.1.6(没有DateTime类),我正在使用CodeIgniter。

    3 回复  |  直到 14 年前
        1
  •  0
  •   SW4    14 年前

    根据上面的评论-你可以用饼干

    Javascript代码:

    var today = new Date();
    
    function SetCookie(cookieName,cookieValue,nDays) {
     var expire = new Date();
     if (nDays==null || nDays==0) nDays=1;
     expire.setTime(today.getTime() + 3600000*24*nDays);
     document.cookie = cookieName+"="+escape(cookieValue)
                     + ";expires="+expire.toGMTString();
    }
    
    SetCookie("datecookie", today, 30);
    
    window.location.href=window.location.href
    

    菲律宾比索:

    echo date("m d Y", strtotime($_COOKIE['datecookie']));
    
        2
  •  0
  •   SW4    14 年前

    因为Javascript是基于客户端的,PHP是基于服务器的,所以它们不会通信。要告诉服务器浏览器的时间,您需要从客户端发送信息,也许是通过Ajax,发布浏览器的时间。然后,目标PHP脚本应根据需要处理/输出该脚本。另一个(obtuse)选项是尝试基于IP对用户进行地理定位,然后猜测该位置的正确时间-但是这对于这个目的来说是低效的。

        3
  •  0
  •   James Sumners Gavriel    14 年前

    “我知道可以使用date_default_time zone_set(),但如何将偏移量(例如-4)转换为时区字符串(例如America/New_York)。”

    只需查看与该函数的文档相关联的注释。评论 #99006