package { public class DateFormat { public static var MONTHS:Array = ["January","February","March","April","May","June","July","August","September","October","November","December"]; public static var DAYS:Array = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]; //public static var MONTHS:Array = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"]; //public static var DAYS:Array = ["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"]; /** * Receives a string with specific caracters and replace them with date information based on the Date Object passed. * @param formatStyle a string with or more of the caracters bellow (starting at line 15).
* @param date the Date object with the date you want to format * * The folowing caracters are the ones to be replaced: * * @example *
		* var d:Date = new Date(2011, 7, 6, 14, 1, 58, 220);
		* trace(DateUtil.formatDate("z - l - d/m/Y = h:i:s:u A", d)); // outputs: "186 - Wednesday - 06/07/2011 - 02:01:58:220 PM"
		* 
* @see http://php.net/manual/en/function.date.php */ public static function formatDate(formatStyle:String,date:Date):String { var dateFormated:String = formatStyle; dateFormated = dateFormated.replace(/d/g,leadZero(date.date)); dateFormated = dateFormated.replace(/j/g,String(date.date)); dateFormated = dateFormated.replace(/w/g,String(date.day)); if (dateFormated.search("z") != -1) { dateFormated = dateFormated.replace(/z/g,String(DateFormat.dayOfYear(date.month,date.date))); } dateFormated = dateFormated.replace(/m/g,leadZero(date.month + 1)); dateFormated = dateFormated.replace(/n/g,String(date.month + 1)); if (dateFormated.search("t") != -1) { dateFormated = dateFormated.replace(/t/g,String(DateFormat.numberOfDaysInMonth(date.month,DateFormat.leapYear(date.fullYear)))); } dateFormated = dateFormated.replace(/L/g,DateFormat.leapYear(date.fullYear) ? "1":"0"); dateFormated = dateFormated.replace(/Y/g,String(date.fullYear)); dateFormated = dateFormated.replace(/y/g,String(date.fullYear).substr(2)); dateFormated = dateFormated.replace(/g/g,date.hours <= 12 ? date.hours:date.hours - 12); dateFormated = dateFormated.replace(/G/g,date.hours); dateFormated = dateFormated.replace(/h/g,leadZero(date.hours <= 12 ? date.hours:date.hours - 12)); dateFormated = dateFormated.replace(/H/g,leadZero(date.hours)); dateFormated = dateFormated.replace(/i/g,leadZero(date.minutes)); dateFormated = dateFormated.replace(/s/g,leadZero(date.seconds)); dateFormated = dateFormated.replace(/u/g,leadZero(date.milliseconds)); dateFormated = dateFormated.replace(/U/g,String(date.time)); dateFormated = dateFormated.replace(/a/g,"[{(a)}]"); dateFormated = dateFormated.replace(/A/g,"[{(A)}]"); dateFormated = dateFormated.replace(/D/g,"[{(D)}]"); dateFormated = dateFormated.replace(/l/g,"[{(l)}]"); dateFormated = dateFormated.replace(/M/g,"[{(M)}]"); dateFormated = dateFormated.replace(/F/g,"[{(F)}]"); dateFormated = dateFormated.replace(/\[\{\(a\)\}\]/g,date.hours < 12 ? "am":"pm"); dateFormated = dateFormated.replace(/\[\{\(A\)\}\]/g,date.hours < 12 ? "AM":"PM"); dateFormated = dateFormated.replace(/\[\{\(D\)\}\]/g,String(DateFormat.DAYS[date.day]).substr(0,3)); dateFormated = dateFormated.replace(/\[\{\(l\)\}\]/g,DateFormat.DAYS[date.day]); dateFormated = dateFormated.replace(/\[\{\(M\)\}\]/g,String(DateFormat.MONTHS[date.month]).substr(0,3)); dateFormated = dateFormated.replace(/\[\{\(F\)\}\]/g,DateFormat.MONTHS[date.month]); function leadZero(num:int):String { return (num < 10) ? "0" + String(num):String(num); } return dateFormated; } public static function dayOfYear(month:uint,day:uint):uint { if ((month == 0)) { return day - 1; } var total:uint = 0; for (var i:uint = 0; i < month; i++) { total += DateFormat.numberOfDaysInMonth(i); } return total + day - 1; } public static function leapYear(year:uint):Boolean { return ((((year % 4) == 0) && year % 100 != 0) || year % 100 == 0); } public static function numberOfDaysInMonth(month:uint,isLeapYear:Boolean=false):uint { if ((month == 1)) { return isLeapYear ? 29:28; } else if (((month <= 6) && (month & 1) == 1)) { return 30; } else if (((month > 6) && (month & 1) == 0)) { return 30; } return 31; } } }