Skip to content

Instantly share code, notes, and snippets.

@localshred
Created March 24, 2011 20:09
Show Gist options
  • Save localshred/885779 to your computer and use it in GitHub Desktop.
Save localshred/885779 to your computer and use it in GitHub Desktop.
Relative dates in flex
package Assets.Applications.Includes
{
import com.adobe.utils.DateUtil;
public class RelativeDateUtil extends DateUtil
{
public static var SECONDS_IN_MINUTE:Number = 60;
public static var MINUTES_IN_HOUR:Number = 60;
public static var HOURS_IN_DAY:Number = 24;
public static var MILLISECONDS_IN_SECOND:Number = 1000;
public static var MILLISECONDS_IN_MINUTE:Number = MILLISECONDS_IN_SECOND * SECONDS_IN_MINUTE;
public static var MILLISECONDS_IN_HOUR:Number = MILLISECONDS_IN_MINUTE * MINUTES_IN_HOUR;
public static var MILLISECONDS_IN_DAY:Number = MILLISECONDS_IN_HOUR * HOURS_IN_DAY;
public static var DAYS_IN_WEEK:Number = 7;
public static var DAYS_IN_MONTH_MIN:Number = 28;
public static var DAYS_IN_MONTH_MAX:Number = 31;
public static var DAYS_IN_YEAR:Number = 365;
public function RelativeDateUtil()
{
super();
}
public static function relativeDifference(target:Date, relative:Date = null):String
{
if (relative == null) {
relative = new Date();
}
var diff:Number = (relative.getTime() - target.getTime());
var result:String;
if (diff < MILLISECONDS_IN_SECOND) {
result = 'a moment ago';
} else if (diff < MILLISECONDS_IN_SECOND * 1.3) {
result = '1 minute ago';
} else if (diff < MILLISECONDS_IN_SECOND * 50) {
result = Math.floor(diff / 60)+' minutes ago';
} else if (diff < MILLISECONDS_IN_HOUR * 2) {
result = '1 hour ago';
} else if (diff < MILLISECONDS_IN_HOUR * (HOURS_IN_DAY / 1.02)) {
result = Math.floor(diff / MILLISECONDS_IN_HOUR * 1.02)+' hours ago';
} else if (diff == 1) {
result = 'Yesterday';
} else if (diff <= DAYS_IN_WEEK) {
result = diff+' days ago';
} else if (diff <= DAYS_IN_MONTH_MIN) {
var numWeeks:Number = Math.floor(diff / DAYS_IN_WEEK);
result = numWeeks+' weeks ago';
} else if (diff <= DAYS_IN_YEAR) {
var numMonths:Number = Math.floor(diff / DAYS_IN_MONTH_MIN);
result = numMonths+' months ago';
} else if (diff > DAYS_IN_YEAR) {
var numYears:Number = Math.floor(diff / DAYS_IN_YEAR);
result = numYears+' years ago';
}
return result;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment