Coldfusion/Java - 获取与服务器不同的时区当前时间

Jas*_*son 4 java coldfusion

我已经阅读了关于这个主题的每一篇博文,我可以得到我的动手,但却没有获得快乐.

我在澳大利亚珀斯的服务器上运行了一个站点(共享主机,因此服务器时间设置为珀斯时间).但我需要在澳大利亚墨尔本时区记录所有活动.例如,如果将记录写入数据库,我想记录在墨尔本发生的时间,而不是珀斯(例如发布的论坛主题).我不能直接做DateDiff,因为墨尔本有夏令时,而珀斯没有.另外,我想到了这一点,我不妨想出一个可以给我当前墨尔本(或任何地方)时间的方法,无论它运行的服务器的时区如何.

这项任务变成了一个比我预期的要大得多的挑战.

我得到的是这样的:

    timezoneClass = createObject( "java", "java.util.TimeZone" );
    melbourneTimezone = timezoneClass.getTimeZone(javaCast( "string", "Australia/Melbourne" ));
    melbourneCalendar = createObject( "java", "java.util.GregorianCalendar" ).init(melbourneTimezone);
    melbourneTime = melbourneCalendar.getTime();

    writeDump(melbourneTime);
Run Code Online (Sandbox Code Playgroud)

..从我所知道的,这应该给我我需要的东西,但它不会......当我转出'melbourneTime'时,它只给了我服务器时间.

任何人都可以给我任何指示.我是在正确的道路上,还是一种更简单的方法来实现预期的结果.

非常感谢

贾森

Edy*_*scu 5

如果您使用rip747/TimeZone-CFC,您可以使用以下代码轻松找到答案:

timezoneObj = createObject("component", "timezone").init();
melbourneTime = timezoneObj.castFromServer(now(), "Australia/Melbourne");

writeDump(melbourneTime);
Run Code Online (Sandbox Code Playgroud)