Axelology
Posted At : February 20, 2008 7:26 PM | Posted By : Axel Jensen

Timezone Issues with remote (Date/Time) data and flash

Application - Source

We are wrapping up with this great charting application at cfwebtools, and we get a call from a customer that says our data is wrong....

We listen to them, and debug, and for some reason we just can't quite see the same thing he see's... On top of that, no one else is having the problem, but the fact is that, he has showed us screen shots, he's duplicated on Four pc's of his own, and he's talked to 10 friends telling us that our data is wrong, and that there is mismatched days in our chart.

The problem:

When he was bringing up the charting application, the charts showed up successfully, but when you ta ke a closer look, and you know your stuff about Financial Charting applications, you know what your looking for, and you know it with GREAT detail. So this guy, tells us our data is wrong, and pretty much with all of his friends proved to us SOMETHING was going wrong, but we couldn't duplicate it.

We tried trapping the data he was requesting when the request came in, we tried trapping it right before it went out... then we were using Kevin Langdon's Service Capture to introspect the data that was coming in to flex.

The data is not that complicated, it looks like this:

Date: 2/20/08
Close: 31.53
Open: 30.61

Date: 2/19/08
Close: 30.93
Open: 30.94

but on his computer it looked like this:

Date: 2/19/08
Close: 31.53
Open: 30.61

Date: 2/18/08
Close: 30.93
Open: 30.94

EVERYTHING WAS SLID BACK BY ONE DAY.

the Date/Time objects were coming back from coldfusion, and it was returning coldfusion sql. They looked like this: '2/20/08 00:00:00'
'2/19/08 00:00:00'
'2/18/08 00:00:00'

what was really happening is that, flash auto adjusts for your Timezone... so what was really happening is the data is getting turned into this in flash (if they come back to flash as date/time objects)

Pacific Standard Time

'2/19/08 22:00:00'
'2/18/08 22:00:00'
'2/17/08 22:00:00'

I'm sort of at a loss and i'm looking for help, there is one post that was more clear than the rest, but still doesnt solve my issue, it's written by Ted Patrick of adobe. He states to use Universal Time, (UTC).

I have a problem with this!

I'm not the one creating the date times, nor do I get a chance to touch the data before it goes to my components... Of course I could obviously go in, to my result function of my remote object, or my command of cairngorm, and loop over the data, and adjust it all manually... BUT NOOOOO, I Don't want to, what if i'm dealing with 40,000 records in a charting application (how bout we make it an even MILLION records, just to prove a point), then obviously the flash player has enough work to do on it's own, without me looping through the data.

How do I query my database, and have it be a 00:00:00 time, and not have flash offset my date when it comes back to it?

For now, we manually change things in our query to add hours to the date time, but that is kind of sloppy...

Please check the example, and help me out if you can... Like I said I'm at a loss with this one.

Application - Source

Comments
I ran into this same problem in my charting application too! I submitted a bug report: http://bugs.adobe.com/jira/browse/FLEXDMV-1108, and they marked it as "cannot reproduce" (Maybe because those guys are in a different time zone). I ended up making some modifications to the DateTimeAxis class and got it working, but this was a very un-elegant solution since it is all but guaranteed to break if I try to move the application to Flex 3.
# Posted By Ryan | 2/21/08 10:09 AM
Yeah, that is definitely not good, (the DateTimeAxis) what you probably want to do is actually just extend the plain old "Date" object in AS3, and override it's setters, and compare the timeZoneOffset, but there still would be no way for actionscript to adjust those accordingly without looping over all of the data and casting it...


either way, IT BLOWS!

dont forget to subscribe to the new blog http://axelscript.com, i'm going to be discontinuing this one is a few months, and so i'm doing double posts right now, one on that blog, one on this one.
# Posted By Axel | 2/21/08 10:40 AM
As far as I know, it's a known bug and Flash Player 10 (Astro) is suppose to take care of timezones.
# Posted By Flashmattic | 3/4/08 10:02 AM



Blog provided and hosted by CF Webtools. Blog Sofware by Ray Camden.