/*
* 日期处理工具类
* 20130731
*/
dev.DateToolBox = (function() {
/*按照指定的格式转换目标日期*/
var _getDateByFormat = function(sourceDate, format) {
var o = {
"M+" : sourceDate.getMonth() + 1, //月份
"d+" : sourceDate.getDate(), //日
"h+" : sourceDate.getHours() % 12 == 0 ? 12 : sourceDate.getHours() % 12, //小时
"H+" : sourceDate.getHours(), //小时
"m+" : sourceDate.getMinutes(), //分
"s+" : sourceDate.getSeconds(), //秒
"q+" : Math.floor((sourceDate.getMonth() + 3) / 3), //季度
"S" : sourceDate.getMilliseconds() //毫秒
};
var week = {
"0" : "/u65e5",
"1" : "/u4e00",
"2" : "/u4e8c",
"3" : "/u4e09",
"4" : "/u56db",
"5" : "/u4e94",
"6" : "/u516d"
};
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1, (sourceDate.getFullYear() + "").substr(4 - RegExp.$1.length));
}
if (/(E+)/.test(format)) {
format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[sourceDate.getDay() + ""]);
}
for (var k in o) {
if (new RegExp("(" + k + ")").test(format)) {
format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return format;
};
/*返回当前的Date对象*/
var _getNowDate = function() {
return new Date();
};
/*返回当前时间戳*/
var _getNowTime = function() {
var date = new Date();
return date.getTime();
};
/*计算并返回当前时间所在自然月第一天对应的日期*/
var _getFirstDateOfMonth = function(format) {
var nowTime = _getNowDate();
var monthFirstDay = new Date(nowTime.getFullYear(), nowTime.getMonth(), 1);
return format ? _getDateByFormat(monthFirstDay, format) : monthFirstDay;
};
/*
* 单例的实现
*/
/*
* 内部定义DateToolBox的实例
* 通过该实例,为外部提供接口
*/
var dateToolBoxInstance = {
getCurrentTime : function() {
return _getNowTime();
},
getDateOfToday : function(format) {
var nowTime = _getNowDate();
return format ? _getDateByFormat(nowTime, format) : nowTime;
},
getFirstDateOfMonth : function(format) {
return _getFirstDateOfMonth(format);
},
convertDate : function(sourceDate, format) {
var _format = format || 'yyyy-MM-dd';
return _getDateByFormat(sourceDate, _format);
},
convertTimestamp : function(sourceTimestamp, format) {
var _format = format || 'yyyy-MM-dd';
var sourceDate = new Date(parseInt(sourceTimestamp) * 1000);
return _getDateByFormat(sourceDate, _format);
}
};
/*返回DateToolBox的唯一实例*/
function init() {
return dateToolBoxInstance;
}
/*外部只能通过getInstance方法获得本类的实例*/
return {
getInstance : init
};
})();