+ Start a Discussion
ShinShin 

Flex Toolkit : dateTimeToString problem

I'm now start using flex toolkit for apex, and had a trouble while creating record with dateTime attribute. For example, following code doesn't work properly.
Code:
var event1:SObject = new SObject('Event');
event1.Subject = 'event #1';
event1.ActivityDateTime = new Date(2007, 7, 30, 9, 0, 0); // 2007-07-30:09:00:00+9:00
event1.DurationInMinutes = 60;
var event2:SObject = new SObject('Event');
event2.Subject = 'event #2';
event2.ActivityDateTime = new Date(2007, 7, 30, 8, 0, 0); // 2007-07-30:08:00:00+9:00
event2.DurationInMinutes = 60;
conn.create([ event1, event2 ], new AsyncResponder(handleResult));
Both records were successfully inserted, but not correctly for event #2. The date of event #2 became  next day, 2007-07-31.
First I thought it might be caused by some bugs in flex toolkit manipulating timezone offset (because my current timezone is +9:00 (JST), and the incorrect insertion always happens before 9:00 a.m. ). Following test code might explain this  (I'm using Flex Toolkit PR3.6)
Code:
<—xml version="1.0" encoding="utf-8"–>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
applicationComplete="test()" >
<mx:Script>
<![CDATA[
import com.salesforce.Util;

private function test():void {
var d:Date = new Date();
for (var i:int=0; i<24; i++) {
output.text += Util.dateTimeToString(d)+'\n';
d.hours--;
}
}
]]>
</mx:Script>
<mx:TextArea id="output" width="100%" height="800"/>
</mx:Application>
and output is here:

Code:
2007-07-30T19:20:08.95+09:00
2007-07-30T18:20:08.95+09:00
2007-07-30T17:20:08.95+09:00
2007-07-30T16:20:08.95+09:00
2007-07-30T15:20:08.95+09:00
2007-07-30T14:20:08.95+09:00
2007-07-30T13:20:08.95+09:00
2007-07-30T12:20:08.95+09:00
2007-07-30T11:20:08.95+09:00
2007-07-30T10:20:08.95+09:00
2007-07-30T09:20:08.95+09:00
2007-07-30T08:20:08.95-15:00
2007-07-30T07:20:08.95-15:00
2007-07-30T06:20:08.95-15:00
2007-07-30T05:20:08.95-15:00
2007-07-30T04:20:08.95-15:00
2007-07-30T03:20:08.95-15:00
2007-07-30T02:20:08.95-15:00
2007-07-30T01:20:08.95-15:00
2007-07-30T00:20:08.95-15:00
2007-07-29T23:20:08.95+09:00
2007-07-29T22:20:08.95+09:00
2007-07-29T21:20:08.95+09:00
2007-07-29T20:20:08.95+09:00
From the mid of the output line you can see timezone offset becomes +9:00 to -15:00, but the date itself is still remains 2007-07-30.
"2007-07-30T08:20:08.95-15:00" is considered as "
2007-07-31T08:20:08.95+09:00", so it's not a valid dateTime format for the designated date.
 

 
 

 

Ron HessRon Hess
yeah, looks like a bug, the timezone should never be  less then -12.

i don't see the problem in my timezone but if i set it to JST, i see the problem
thanks for reporting this.


Message Edited by Ron Hess on 07-30-2007 11:06 AM

Ron HessRon Hess
I checked in a fix to the src tree, you can check out the latest from the SVN tree on sourceforge

https://sforce.svn.sourceforge.net/svnroot/sforce/mavericks

the fix looks like this :
Code:
    if (diff < -12)
    {
        diff = diff + 24;
    } 
 
Not sure when i can release a complete library, perhaps later this week.

I really apreciate your reporting issues like this, hope to see you at Dreamforce !


ShinShin
Thanks. I'm writing several flex sample codes to Japanese developers, so this fix would be helpful for the developers in Japan.

Shinichi
Ron HessRon Hess
I've released a new lib, with this fix, please try it out and let me know
ShinShin
The problem seems to be fixed. Thanks!

Shinichi