/** * Tea.Date 对象 * * @class Tea.Date */ /** * Tea.Date构造器。使用方法如:
* var date = new Tea.Date();
* var date = new Tea.Date("Y-m-d H:i:s");
* var date = new Tea.Date("Y-m-d H:i:s", 1169226085); * * @constructor Tea.Date * @param String format 时间格式,为可选参数,目前支持O,r,Y,y,L,M,m,n,F,t,w,D,l,d,z,H,i,s,j,h,G,g,a,A等字符。 * @param int time 时间戳,为可选参数 */ Tea.Date = function (format, time) { var date = new Date(); if (typeof(format) == "undefined") { format = "r"; } if (typeof(time) != "undefined") { time = parseInt(time, 10); date.setTime(time); } //parse char this.get = function (chr) { if ((chr >= "a" && chr <= "z") || (chr >= "A" && chr <= "Z")) { var func = "_parse_" + chr; if (this[func]) { return this[func](); } } return chr; }; /** * 根据提供的格式取得对应的时间格式 * * @method parse * @param String format */ this.parse = function (format) { var result = ""; if (format.length > 0) { for (var i=0; i 0 || y%400 == 0)) { return "1"; } return "0"; }; //month this._parse_m = function () { var n = this._parse_n(); if (n.length < 2) { n = "0" + n; } return n; }; this._parse_n = function () { return (date.getMonth() + 1).toString(); }; this._parse_t = function () { var t = 32 - new Date(this.get("Y"), this.get("m") - 1 , 32).getDate(); return t; }; this._parse_F = function () { var n = parseInt(this.parse("n")); var months = ["", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; return months[n]; }; this._parse_M = function () { var n = parseInt(this.parse("n")); var months = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; return months[n]; }; //week this._parse_w = function () { return date.getDay().toString(); }; this._parse_D = function () { var w = parseInt(this._parse_w()); var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]; return days[w]; }; this._parse_l = function () { var w = parseInt(this._parse_w()); var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]; return days[w]; }; //day this._parse_d = function () { var j = this._parse_j(); if (j.length < 2) { j = "0" + j; } return j; }; this._parse_j = function () { return date.getDate().toString(); }; this._parse_W = function () { var _date = new Tea.Date(); _date.set("m", 1); _date.set("d", 1); var w = parseInt(_date.parse("w")); var m = parseInt(this.parse("m"), 10); var total = 0; for (var i=1; i 12) { g = g - 12; } return g.toString(); }; //time this._parse_U = function () { return this.time().toString(); }; //am/pm this._parse_a = function () { var hour = this.parse("H"); return (hour<12)?"am":"pm"; }; this._parse_A = function () { return this.parse("a").toUpperCase(); }; /** * 取得当前时间对应的时间戳,代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的秒数 * * @method time * @return int */ this.time = function () { return Math.round(date.getTime()/1000); }; /* * 将该对象转换成字符串格式 * * @method toString * @return String 该对象的字符串表示形式 */ this.toString = function () { return this.parse(format); }; }; Tea.Date.toTime = function (dateStr) { if (arguments.length == 1) { return Date.parse(dateStr); } else if (arguments.length == 3) { arguments[1] = parseInt(arguments[1], 10) - 1; return (new Date(arguments[0], arguments[1], arguments[2])).time(); } }; Number.prototype.dateFormat = function (format) { var date = new Tea.Date(format, this * 1000); return date.toString(); }; Date.prototype.format = function (format) { return new Tea.Date(format, this.getTime()).toString(); };