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

时间:2010-11-24 15:18:52

标签: coldfusion timezone cfml

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

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

我正在寻找一种解决方案,它不会提示用户随时选择他们的时区,例如Facebook。

由于

4 个答案:

答案 0 :(得分: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>

答案 1 :(得分:6)

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

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

JavaScript的:

var clienttime = new Date();
var time = clienttime.getTimezoneOffset()/60;

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

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

答案 2 :(得分:1)

如果您只是要求您的用户将其时区指定为其登录配置文件的一部分,那么它会更快更准确;设置一次并忘记。

否则,您正在查看IP地址查找并确定IP地址所在的位置,确定时区,然后相应地显示时间。即使您将信息存储在cookie或会话变量中,当您可以询问用户他们所在的时区时,它也会有点不合时宜。

答案 3 :(得分:-1)

如果你正在使用cfwheels.org并且你的用户不介意看“昨天”或“10分钟前”......那么TimeAgoInWords()就是你所需要的。