Flash Date to MySQL Date String

Was doing some AMFPHP work with Flash & MySQL Saturday, and doing your typical data massaging/conversion that one does in the imperfect world of webservices. I needed to have a Flash Date object stored in MySQL and have it come back out again to be usable for the DateField component in Flash. Since the MySQL Date colum type is easily created as a String, it was only a matter of going back to a Flash Date.

Maybe if someone’s bored, they can add the mask required to have this functionality in Darron’s DateFormat class.

GOTCHA: The Date object in Flash returns a 0 based month value. So, December is 11, not 12.

Example:

a = new Date();
trace(a); // Tue Dec 7 07:33:08 GMT-0500 2004
s = getFormatFromDate(a);
trace(s); // 2004-11-07 07:33:08
d = getDateFromFormat(s);
trace(d); // Tue Dec 7 07:33:08 GMT-0500 2004
function getFormatFromDate(d:Date):String
{
var year:Number = d.getFullYear();
var month:Number = d.getMonth();
var day:Number = d.getDate();
var hour:Number = d.getHours();
var minutes:Number = d.getMinutes();
var seconds:Number = d.getSeconds();

var s:String = "";
if(year < 1000)
{
if(year < 100)
{
if(year < 10)
{
if(year < 1)
{
s += "0000-";
}
else
{
s += "000" + year.toString() + "-";
}
}
else
{
s += "00" + year.toString() + "-";
}
}
else
{
s += "0" + year.toString() + "-";
}
}
else
{
s += year.toString() + "-";
}

if(month < 10)
{
s += "0" + month.toString() + "-";
}
else
{
s += month.toString() + "-";
}

if(day < 10)
{
s += "0" + day.toString() + " ";
}
else
{
s += day.toString() + " ";
}

if(hour < 10)
{
s += "0" + hour.toString() + ":";
}
else
{
s += hour.toString() + ":";
}

if(minutes < 10)
{
s += "0" + minutes.toString() + ":"
}
else
{
s += minutes.toString() + ":";
}

if(seconds < 10)
{
s += "0" + seconds.toString();
}
else
{
s += seconds.toString();
}

return s;
}

function getDateFromFormat(s:String):Date
{
var a:Array = s.split(" ");
var theDate:String = a[0];
var theTime:String = a[1];

var dateArray:Array = theDate.split("-");
var year:Number = parseInt(dateArray[0]);
var month:Number = parseInt(dateArray[1]);
var day:Number = parseInt(dateArray[2]);

var timeArray:Array = theTime.split(":");
var hour:Number = parseInt(timeArray[0]);
var minutes:Number = parseInt(timeArray[1]);
var seconds:Number = parseInt(timeArray[2]);

var d:Date = new Date(year, month, day, hour, minutes, seconds);
return d;
}