?? dateutil.as
字號:
* (referring to the 20th century) are fine, too. * * This function is useful for parsing RSS .91, .92, and 2.0 dates. * * @param str * * @returns * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * @tiptext * * @see http://asg.web.cmu.edu/rfc/rfc822.html */ public static function parseRFC822(str:String):Date { var finalDate:Date; try { var dateParts:Array = str.split(" "); var day:String = null; if (dateParts[0].search(/\d/) == -1) { day = dateParts.shift().replace(/\W/, ""); } var date:Number = Number(dateParts.shift()); var month:Number = Number(DateUtil.getShortMonthIndex(dateParts.shift())); var year:Number = Number(dateParts.shift()); var timeParts:Array = dateParts.shift().split(":"); var hour:Number = int(timeParts.shift()); var minute:Number = int(timeParts.shift()); var second:Number = (timeParts.length > 0) ? int(timeParts.shift()): 0; var milliseconds:Number = Date.UTC(year, month, date, hour, minute, second, 0); var timezone:String = dateParts.shift(); var offset:Number = 0; if (timezone.search(/\d/) == -1) { switch(timezone) { case "UT": offset = 0; break; case "UTC": offset = 0; break; case "GMT": offset = 0; break; case "EST": offset = (-5 * 3600000); break; case "EDT": offset = (-4 * 3600000); break; case "CST": offset = (-6 * 3600000); break; case "CDT": offset = (-5 * 3600000); break; case "MST": offset = (-7 * 3600000); break; case "MDT": offset = (-6 * 3600000); break; case "PST": offset = (-8 * 3600000); break; case "PDT": offset = (-7 * 3600000); break; case "Z": offset = 0; break; case "A": offset = (-1 * 3600000); break; case "M": offset = (-12 * 3600000); break; case "N": offset = (1 * 3600000); break; case "Y": offset = (12 * 3600000); break; default: offset = 0; } } else { var multiplier:Number = 1; var oHours:Number = 0; var oMinutes:Number = 0; if (timezone.length != 4) { if (timezone.charAt(0) == "-") { multiplier = -1; } timezone = timezone.substr(1, 4); } oHours = Number(timezone.substr(0, 2)); oMinutes = Number(timezone.substr(2, 2)); offset = (((oHours * 3600000) + (oMinutes * 60000)) * multiplier); } finalDate = new Date(milliseconds - offset); if (finalDate.toString() == "Invalid Date") { throw new Error("This date does not conform to RFC822."); } } catch (e:Error) { var eStr:String = "Unable to parse the string [" +str+ "] into a date. "; eStr += "The internal error was: " + e.toString(); throw new Error(eStr); } return finalDate; } /** * Returns a date string formatted according to RFC822. * * @param d * * @returns * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * @tiptext * * @see http://asg.web.cmu.edu/rfc/rfc822.html */ public static function toRFC822(d:Date):String { var date:Number = d.getUTCDate(); var hours:Number = d.getUTCHours(); var minutes:Number = d.getUTCMinutes(); var seconds:Number = d.getUTCSeconds(); var sb:String = new String(); sb += DateBase.dayNamesShort[d.getUTCDay()]; sb += ", "; if (date < 10) { sb += "0"; } sb += date; sb += " "; //sb += DateUtil.SHORT_MONTH[d.getUTCMonth()]; sb += DateBase.monthNamesShort[d.getUTCMonth()]; sb += " "; sb += d.getUTCFullYear(); sb += " "; if (hours < 10) { sb += "0"; } sb += hours; sb += ":"; if (minutes < 10) { sb += "0"; } sb += minutes; sb += ":"; if (seconds < 10) { sb += "0"; } sb += seconds; sb += " GMT"; return sb; } /** * Parses dates that conform to the W3C Date-time Format into Date objects. * * This function is useful for parsing RSS 1.0 and Atom 1.0 dates. * * @param str * * @returns * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * @tiptext * * @see http://www.w3.org/TR/NOTE-datetime */ public static function parseW3CDTF(str:String):Date { var finalDate:Date; try { var dateStr:String = str.substring(0, str.indexOf("T")); var timeStr:String = str.substring(str.indexOf("T")+1, str.length); var dateArr:Array = dateStr.split("-"); var year:Number = Number(dateArr.shift()); var month:Number = Number(dateArr.shift()); var date:Number = Number(dateArr.shift()); var multiplier:Number; var offsetHours:Number; var offsetMinutes:Number; var offsetStr:String; if (timeStr.indexOf("Z") != -1) { multiplier = 1; offsetHours = 0; offsetMinutes = 0; timeStr = timeStr.replace("Z", ""); } else if (timeStr.indexOf("+") != -1) { multiplier = 1; offsetStr = timeStr.substring(timeStr.indexOf("+")+1, timeStr.length); offsetHours = Number(offsetStr.substring(0, offsetStr.indexOf(":"))); offsetMinutes = Number(offsetStr.substring(offsetStr.indexOf(":")+1, offsetStr.length)); timeStr = timeStr.substring(0, timeStr.indexOf("+")); } else // offset is - { multiplier = -1; offsetStr = timeStr.substring(timeStr.indexOf("-")+1, timeStr.length); offsetHours = Number(offsetStr.substring(0, offsetStr.indexOf(":"))); offsetMinutes = Number(offsetStr.substring(offsetStr.indexOf(":")+1, offsetStr.length)); timeStr = timeStr.substring(0, timeStr.indexOf("-")); } var timeArr:Array = timeStr.split(":"); var hour:Number = Number(timeArr.shift()); var minutes:Number = Number(timeArr.shift()); var secondsArr:Array = (timeArr.length > 0) ? String(timeArr.shift()).split(".") : null; var seconds:Number = (secondsArr != null && secondsArr.length > 0) ? Number(secondsArr.shift()) : 0; var milliseconds:Number = (secondsArr != null && secondsArr.length > 0) ? Number(secondsArr.shift()) : 0; var utc:Number = Date.UTC(year, month-1, date, hour, minutes, seconds, milliseconds); var offset:Number = (((offsetHours * 3600000) + (offsetMinutes * 60000)) * multiplier); finalDate = new Date(utc - offset); if (finalDate.toString() == "Invalid Date") { throw new Error("This date does not conform to W3CDTF."); } } catch (e:Error) { var eStr:String = "Unable to parse the string [" +str+ "] into a date. "; eStr += "The internal error was: " + e.toString(); throw new Error(eStr); } return finalDate; } /** * Returns a date string formatted according to W3CDTF. * * @param d * @param includeMilliseconds Determines whether to include the * milliseconds value (if any) in the formatted string. * * @returns * * @langversion ActionScript 3.0 * @playerversion Flash 9.0 * @tiptext * * @see http://www.w3.org/TR/NOTE-datetime */ public static function toW3CDTF(d:Date,includeMilliseconds:Boolean=false):String { var date:Number = d.getUTCDate(); var month:Number = d.getUTCMonth(); var hours:Number = d.getUTCHours(); var minutes:Number = d.getUTCMinutes(); var seconds:Number = d.getUTCSeconds(); var milliseconds:Number = d.getUTCMilliseconds(); var sb:String = new String(); sb += d.getUTCFullYear(); sb += "-"; //thanks to "dom" who sent in a fix for the line below if (month + 1 < 10) { sb += "0"; } sb += month + 1; sb += "-"; if (date < 10) { sb += "0"; } sb += date; sb += "T"; if (hours < 10) { sb += "0"; } sb += hours; sb += ":"; if (minutes < 10) { sb += "0"; } sb += minutes; sb += ":"; if (seconds < 10) { sb += "0"; } sb += seconds; if (includeMilliseconds && milliseconds > 0) { sb += "."; sb += milliseconds; } sb += "-00:00"; return sb; } }}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -