1
8
9 import com.sekati.convert.TimeConversion;
10 import com.sekati.math.Range;
11
12
20 class com.sekati.utils.DateUtils {
21
22
26 public static function get months():Array {
27 return new Array( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" );
28 }
29
30
34 public static function get shortmonths():Array {
35 return new Array( "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" );
36 }
37
38
42 public static function get days():Array {
43 return new Array( "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" );
44 }
45
46
50 public static function get shortdays():Array {
51 return new Array( "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" );
52 }
53
54
62 public static function getMonth(n:Number):String {
63 return months[n];
64 }
65
66
74 public static function getShortMonth(n:Number):String {
75 return shortmonths[n];
76 }
77
78
86 public static function getDay(n:Number):String {
87 return days[n];
88 }
89
90
98 public static function getShortDay(n:Number):String {
99 return shortdays[n];
100 }
101
102
107 public static function padTime(n:Number):String {
108 return (String( n ).length < 2) ? ("0" + n) : n;
109 }
110
111
116 public static function dateFromDB(dbdate:String):Date {
117 var tmp:Array = dbdate.split( " " );
118 var dates:Array = tmp[0].split( "-" );
119 var hours:Array = tmp[1].split( ":" );
120 var d:Date = new Date( dates[0], dates[1] - 1, dates[2], hours[0], hours[1], hours[2] );
121 return d;
122 }
123
124
129 public static function getHoursAmPm(hour24:Number):Object {
130 var returnObj:Object = new Object( );
131 returnObj.ampm = (hour24 < 12) ? "am" : "pm";
132 var hour12:Number = hour24 % 12;
133 if (hour12 == 0) {
134 hour12 = 12;
135 }
136 returnObj.hours = hour12;
137 return returnObj;
138 }
139
140
146
147 public static function dateDiff(d1:Date, d2:Date):Number {
148 if(d2 == null) d2 = new Date( );
149 return d2.getTime( ) - d1.getTime( );
150 }
151
152
160 public static function isValidAge(year:Number, month:Number, day:Number, requiredAge:Number):Boolean {
161 if (!isValidDate( year, month, day, true )) return false;
162 var now:Date = new Date( );
163 var bd:Date = new Date( year + requiredAge, month, day );
164 return (now.getTime( ) > bd.getTime( ));
165 }
166
167
175 public static function isValidDate(year:Number, month:Number, day:Number, mustBeInPast:Boolean):Boolean {
176 if(!Range.isInRange( year, 1800, 3000 ) || isNaN( year )) return false;
177 if(!Range.isInRange( month, 0, 11 ) || isNaN( month )) return false;
178 if(!Range.isInRange( day, 1, 31 ) || isNaN( day )) return false;
179 if(day > getTotalDaysInMonth( year, month )) return false;
180 if(mustBeInPast && dateDiff( new Date( year, month, day ) ) < 0) return false;
181 return true;
182 }
183
184
190 public static function getTotalDaysInMonth(year:Number, month:Number):Number {
191 return TimeConversion.ms2days( dateDiff( new Date( year, month, 1 ), new Date( year, month + 1, 1 ) ) );
192 }
193
194
199 public static function getTotalDaysInYear(year:Number):Number {
200 return TimeConversion.ms2days( dateDiff( new Date( year, 0, 1 ), new Date( year + 1, 0, 1 ) ) );
201 }
202
203 private function DateUtils() {
204 }
205 }