AS3: Converting Date() to the Epoch
The Flash Player uses the same epoch as Unix (January 1, 1970). An epoch is “a particular period of time marked by distinctive features, events, etc.” (source: Dictionary.com)
One thing to note is the date pertains to the UTC (univeral time coordinated: “Universal time, taking into account the addition or omission of leap seconds by atomic clocks each year to compensate for changes in the rotation of the earth.” [source: Dictionary.com]). Flash can handle this just fine. Let’s get to the code (starting to itch with all of these definitions).
One option to get the UTC date:
var now:Date = new Date(); var epoch:Number = Date.UTC(now.fullYear, now.month, now.date, now.hours, now.minutes, now.seconds, now.milliseconds); trace(now, epoch/1000, Math.round(epoch/1000));
The only real thing to note is the epoch/1000 is there because Flash uses milliseconds and epoch is in seconds so we divide by 1000 to get the seconds since the epoch. Now, that is how I first did it until I RTFM (read the freaking manual). It felt so dirty and unnecessary. Here is the easiest way to do it.
var now:Date = new Date(); var epoch:Number = Math.round(now.valueOf()/1000); trace(now.valueOf(), epoch); //1238595716133 1238595716
Notice the first trace shows a lot more numbers since it is milliseconds since the epoch. The second number is the epoch/1000 and rounded. Don’t forget to round or you’ll get three decimal places. Date.value() is the trick here. By definition: “Returns the number of milliseconds since midnight January 1, 1970, universal time, for a Date object.” (source: Adobe LiveDocs)
Anyways…that’s it. No need to pontificate (been wanting to use that word; lol) anymore about such a simple task.
UPDATE
Since someone on Twitter made the statement about getTime() I guess I wasn’t clear. Let me clarify.
The above is NOT the only way to do it. Yes, you can use new Date().getTime() or new Date().time (preferred over getTime() since it really is a property). They both yield the same result as new Date().value(). Dividing by 1000 and rounding is still required since we’re still fooling with milliseconds since epoch.
Thanks.

April 1st, 2009 at 11:01 am
What happens to the flash app during a leap second?
See the link for a similar example in javascript.
April 1st, 2009 at 11:11 am
I honestly couldn’t answer that one. I know it doesn’t count leap seconds in the conversion and, from what I understand in my brief research, the Javascript epoch is the same as Flash so I’d assume they would act the same. Meaning, the link you provided (http://www.ucolick.org/~sla/leapsecs/epochtime.html) will most likely reign true in Flash as well.
January 20th, 2010 at 5:37 pm
Awesome post! This is some great information on epoch dates. Appreciate it!