Don't go mad! ;>
May I suggest you use the GetTimeZoneInfo() function? It creates a lovely
little structure with just the information you need:
utcTotalOffset: offset of the local time in minutes from UTC. Positive values
are west of Greenwich; negative values are east.
utcHourOffset: offset in hours of local time from UTC.
utcMinuteOffset: offset in minutes after the hours offset is taken into
account. For North America, this is zero. Some countries have part-hour
offsets, like Newfoundland, Iran, India, and parts of Australia.
isDSTOn -- True if Daylight Savings Time (DST) is on in the host machine; False
if DST is off.
So, for your app, the code would become:
<cfset timeInfo = GetTimeZoneInfo()>
<cfoutput>
User's TimeZoneOffset = #timeInfo.utcHourOffset#
</cfoutput>
Ain't it cool?!
- Jeff
On 30 Mar 2001, at 7:56, Marc Funaro wrote:
> Greetings all,
>
> Been fighting with this, can't figure out the answer, and going mad. I am
> storing all times and dates in a database in UTC (GMT) format, to properly
> show users the time according to their time zone, and allow the server to be
> (re)located anywhere in the world without having to change code or data.
> Ignore Daylight Savings Time considerations for this example (though if you
> have any suggestions, I am all ears!) -- I have not had the chance to even
> think about DST yet.
>
> 1. The user fills out a form. When they submit, a hidden form field is
> populated with the user's current system time and date, using javascript.
> Since Javascript calculates the months from 0 to 11, I add ONE to the month
> at the time I create the timestamp.
>
> 2. The form submits to a page which converts the current CF Server time to
> an ODBCDateTime in UTC. The User's hidden time field is also converted to
> an ODBCDateTime format.
>
> 3. The different between the user's timestamp on their machine, and the UTC
> according to the server creates the Time Zone Offset for that user -- their
> actual TIME ZONE.
>
> As a real-world example:
>
> -- Assume that the Server and the User both use a utility which maintains
> synchronization with time servers on the Internet; therefore the two systems
> are within milliseconds of Atomic Time.
> -- On March 30th, 2001, a user in NY submits a form at 7am EST, on a server
> in California (4am PST).
> -- The software calculates the current UTC time as being 12:00:00PM (4am CA
> time is 12 noon GMT/UTC).
> -- The difference between the user's time (3/30/2001 4:00:00am) and UTC
> (12:00:00PM) is -8 hours, which is absolutely correct; we know the user is
> in PST because of this difference.
>
> NOW!: The code snippet below shows the CF Code that calcuates the
> difference between the user's time and UTC. However, if you run this code,
> you will NOT get a difference of - 8 hours, but instead, -7 hours. If you
> increment UTC by at least one second, it then calculates the timezone
> properly; but one cannot assume that the user and the server will always be
> out of synch... although it is most likely a certainty, I do not wish to
> assume anything.
>
> I also do not wish to make the user choose their time zone on the form; I
> really wanted this to be automatic.
>
> Here is the code:
>
> <CFOUTPUT>
> <CFSET TestUTCNow = CreateODBCDateTime("3/30/2001 12:00:00")>
> <CFSET TestUserTime = CreateODBCDateTime("3/30/2001 4:00:00")>
> <CFSET UserTZOffset = DateDiff("h", TestUTCNow, TestUserTime)>
> User's TimeZoneOffset = #UserTZOffset# <!--- This SHOULD be -8, but is
> only -7! Unless, you make UTCNow equal to "3/30/2001 12:00:01" --->
> </CFOUTPUT>
>
> Has anyone solved this problem, or have a different way of putting the
> user's timezone into the database, including DST issues?
>
> Thanks in advance,
>
> .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
> Marc Funaro, President
> Advantex Technical Consulting Services
> 5547 State Highway 12
> Norwich, NY 13815
> Phone: 607-336-6895
> Fax: 801-383-4864
> Internet: http://www.advantex.net
> Email: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
> .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
>
>
>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Structure your ColdFusion code with Fusebox. Get the official book at
http://www.fusionauthority.com/bkinfo.cfm
Archives: http://www.mail-archive.com/[email protected]/
Unsubscribe: http://www.houseoffusion.com/index.cfm?sidebar=lists