/**
* 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();
};