Created
March 24, 2011 20:09
-
-
Save localshred/885779 to your computer and use it in GitHub Desktop.
Relative dates in flex
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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