js ;(function() {Toolkit = function() {};//工具箱var toolkit = Toolkit;/** * 打印日志 * @param {String} text 日志文本 */toolkit.prototype.log = function(text) {console.log(text);}/** * 格式化 * @param {String} str 字符串 *
;(function() {
Toolkit = function() {};
//工具箱
var toolkit = Toolkit;
/**
* 打印日志
* @param {String} text 日志文本
*/
toolkit.prototype.log = function(text) {
console.log(text);
}
/**
* 格式化
* @param {String} str 字符串
* @param {Object} args 参数
*/
toolkit.prototype.format = function(str, args) {
var temp = str.replace(/\{(\w+)\}/g, function(k1, k2) {
return args[k2];
});
return temp;
};
/**
* 格式化JSON
* @param {Object} data
*/
toolkit.prototype.parseJson = function(data) {
if(window.JSON && window.JSON.parse) {
return window.JSON.parse(data);
}
var rValidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rValidchars = /^[\],:{}\s]*$/,
rValidbraces = /(?:^|:|,)(?:\s*\[)+/g,
rValidescape = rValidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g;
if(rValidchars.test(data.replace(rValidescape, '@').replace(rValidtokens, ']').replace(rValidbraces, ''))) {
return(new Function('return ' + data))();
} else {
//抛出异常
}
}
/**
* 获得对象的所有属性值
* @param {Object} object
*/
toolkit.prototype.getObjectKeys = function(object) {
if(object !== Object(object)) {
throw new TypeError('Object.keys called on a non-object');
}
var keys = [];
var temp = null;
for(temp in object) {
if(Object.prototype.hasOwnProperty.call(object, temp)) {
keys.push(temp);
}
}
return keys;
}
/**
* 对象格式化字符串
* @param {Object} object
*/
toolkit.prototype.stringify = function(object) {
if(window.JSON && window.JSON.stringify) {
return window.JSON.stringify(object);
}
var s = "";
if(!Object.keys) {
Object.keys = toolkit.prototype.getObjectKeys;
}
var keys = Object.keys(object);
for(var key in keys) {
s += ",\"" + keys[key] + "\":\"" + object[keys[key]] + "\"";
}
if(s != "") {
s = s.substring(1);
}
return "{" + s + "}";
}
/**
* 将日期格式化
* @param {Object} date 日期
* @param {Object} fmt 格式化
*/
toolkit.prototype.formatDate = function(date, fmt) {
var o = {
"M+": date.getMonth() + 1,
"d+": date.getDate(),
"h+": date.getHours(),
"H+": date.getHours(),
"m+": date.getMinutes(),
"s+": date.getSeconds(),
"q+": Math.floor((date.getMonth() + 3) / 3),
"S+": date.getMilliseconds()
};
if(/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
return fmt;
}
//工具类
toolkit.classes = function() {
toolkit.prototype.datepacket = Datepacket;
}
toolkit.classes();
function Datepacket() {};
//默认格式化模板
var dateFormateTemplate = {
"yyyy": "([0-9]{2}|[0-9]{4})",
"MM": "([0]{1}[0-9]{1}|[1]{1}[0-2]{1})",
"dd": "([0-2]{1}[0-9]{1}|[3]{1}[0-1]{1})",
"HH": "([0-1]{1}[0-9]{1}|[2]{1}[0-3]{1})",
"mm": "([0-5]{1}[0-9]{1})",
"ss": "([0-5]{1}[0-9]{1})",
"S": "([0-9]d+)"
}
//缩写
var df = dateFormateTemplate;
var pt = toolkit.prototype;
/**
* 获得当前日期
* @param {String} fmt 格式化字符串
*/
pt.datepacket.prototype.getCurrentDate = function(fmt) {
if(fmt != null) {
return pt.formatDate(new Date(), fmt);
}
return pt.formatDate(new Date(), "yyyy-MM-dd HH:mm:ss.S");
};
/**
* 获得当前日期后一天
* @param {String} fmt 格式化字符串
*/
pt.datepacket.prototype.getNextDate = function(fmt) {
var currentDate = new Date();
currentDate.setDate(currentDate.getDate() + 1)
if(fmt != null) {
return pt.formatDate(currentDate, fmt);
}
return pt.formatDate(currentDate, "yyyy-MM-dd HH:mm:ss.S");
};
/**
* 获得当前日期前一天
* @param {String} fmt 格式化字符串
*/
pt.datepacket.prototype.getPreDate = function(fmt) {
var currentDate = new Date();
currentDate.setDate(currentDate.getDate() - 1)
if(fmt != null) {
return pt.formatDate(currentDate, fmt);
}
return pt.formatDate(currentDate, "yyyy-MM-dd HH:mm:ss.S");
};
/**
* 获得当前日期偏移量日期字符串
* @param {Object} offset 偏移量
* @param {Object} fmt 输出格式化
*/
pt.datepacket.prototype.getOffsetDate = function(offset, fmt) {
var currentDate = new Date();
currentDate.setDate(currentDate.getDate() + offset)
if(fmt != null) {
return pt.formatDate(currentDate, fmt);
}
return pt.formatDate(currentDate, "yyyy-MM-dd HH:mm:ss.S");
};
/**
* 兼容IE8 转换日期,支持yyyy-MM-dd HH:mm:ss.S
* @param {String} dateStringInRange 日期字符串
*/
pt.datepacket.prototype.parseISO8601 = function(dateStringInRange, reg) {
var temp = df.defaults;
var isoExp = reg;
var date = new Date(NaN);
var month = null;
var parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
/**
* 根据字符串获得偏移量日期
* @param {String} str 日期字符串
* @param {Integer} offset 偏移量
* @param {Object} fmt 输出格式化字符串
*/
pt.datepacket.prototype.getSOffsetDate = function(str, offset, fmt) {
var temp = df.defaults;
var arrays = [temp["YMD"], temp["YMDHMS"], temp["YMDTHMS"], temp["YMDHMSP"], temp["YMDTHMSP"]]
var formatReg = null;
var isISO8601 = false;
for(var i in arrays) {
var value = arrays[i];
var reg = new RegExp(value);
if(reg.test(str)) {
formatReg = reg;
isISO8601 = true;
break;
}
}
var date = null;
if(isISO8601) {
date = this.parseISO8601(str, formatReg);
} else {
date = new Date(str);
}
date.setDate(date.getDate() + offset)
if(fmt != null) {
return pt.formatDate(date, fmt);
}
return pt.formatDate(date, "yyyy-MM-dd HH:mm:ss.S");
};
df.defaults = {};
//初始化
var initDefaults = function() {
df.defaults["YMD"] = df["yyyy"] + "-" + df["MM"] + "-" + df["dd"];
df.defaults["HMS"] = df["HH"] + ":" + df["mm"] + ":" + df["ss"];
df.defaults["HMSP"] = df.defaults["HH:mm:ss"] + "." + df["S"];
df.defaults["YMDHMS"] = df.defaults["YMD"] + df.defaults["HMS"];
df.defaults["YMDTHMS"] = df.defaults["YMD"] + " " + df.defaults["HMS"];
df.defaults["YMDHMSP"] = df.defaults["YMD"] + "" + df.defaults["HMSP"];
df.defaults["YMDTHMSP"] = df.defaults["YMD"] + " " + df.defaults["HMSP"];
}
initDefaults();
window.Toolkit = Toolkit;
}());
