根据Coldfusion中用户的时区显示日期和时间

Pao*_*rdo 4 coldfusion timezone cfml

我需要根据登录用户的本地时区在我的应用程序中显示日期时间值.我希望我的应用程序能够自动检测用户的时区,然后相应地显示调整后的服务器日期和时间.

你是如何在Coldfusion中做到这一点的?

我正在寻找一种解决方案,它不会提示用户在任何时候选择他们的时区,比如Facebook.

谢谢

Ben*_*oom 10

而不是让CF进行格式化,我会推送标准化的日期表示(如UTF(并且具有JavaScript格式的日期.这样,日期被格式化为计算机上设置的任何时区).

这避免了区域变化区域附近的错误查找,处理夏令时与未观察到的区域以及人们旅行(格式化为"本地时间"与"本地时间").

添加:

这会以长格式转储当前时间.它是半封闭的,因此您需要查看JavaScript Date Object的方法以获得更多格式化选项.

<cfset n = dateconvert("local2utc",now())>
<script>
 d = new Date();
 d.setUTCFullYear(#dateformat(n, "yyyy")#);
 d.setUTCMonth(#dateformat(n, "m")#);
 d.setUTCDate(#dateformat(n, "d")#);
 d.setUTCHours(#timeformat(n, "H")#);
 d.setUTCMinutes(#timeformat(n, "m")#);
 document.write(d.toLocaleString());
</script>
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记 javascript 的月份编号为 0 - 11 所以这个 `d.setUTCMonth(#dateformat(n, "m")#);` 应该是 `d.setUTCMonth(#dateformat(n, "m")# - 1);` 用于 javascript 显示正确的月份。 (2认同)

And*_*aus 6

ColdFusion是一种服务器端语言.因此,您无法直接确定客户端的时区.

您可以在客户端使用JavaSript,找出timezoneoffset并通过Ajax请求将其发送到ColdFusion.

JavaScript的:

var clienttime = new Date();
var time = clienttime.getTimezoneOffset()/60;
Run Code Online (Sandbox Code Playgroud)

然后在服务器端,您可以使用偏移量来计算要向用户显示的日期.

您还可以使用客户端IP查找客户端的国家/地区,但是您必须使用外部服务来获取某个IP的国家/地区,并且您必须处理每个国家/地区的夏令时和多个时区等问题.