日期格式化函数
来源于百度
Date.prototype.format = function (mask) {
var d = this;
var zeroize = function (value, length) {
if (!length) length = 2;
value = String(value);
for (var i = 0, zeros = ''; i < (length - value.length); i++) {
zeros += '0';
}
return zeros + value;
};
return mask.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|m{1,4}|yy(?:yy)?|([hHMstT])\1?|[lLZ])\b/g, function ($0) {
switch ($0) {
case 'd': return d.getDate();
case 'dd': return zeroize(d.getDate());
case 'ddd': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][d.getDay()];
case 'dddd': return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][d.getDay()];
case 'M': return d.getMonth() + 1;
case 'MM': return zeroize(d.getMonth() + 1);
case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][d.getMonth()];
case 'MMMM': return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][d.getMonth()];
case 'yy': return String(d.getFullYear()).substr(2);
case 'yyyy': return d.getFullYear();
case 'h': return d.getHours() % 12 || 12;
case 'hh': return zeroize(d.getHours() % 12 || 12);
case 'H': return d.getHours();
case 'HH': return zeroize(d.getHours());
case 'm': return d.getMinutes();
case 'mm': return zeroize(d.getMinutes());
case 's': return d.getSeconds();
case 'ss': return zeroize(d.getSeconds());
case 'l': return zeroize(d.getMilliseconds(), 3);
case 'L': var m = d.getMilliseconds();
if (m > 99) m = Math.round(m / 10);
return zeroize(m);
case 'tt': return d.getHours() < 12 ? 'am' : 'pm';
case 'TT': return d.getHours() < 12 ? 'AM' : 'PM';
case 'Z': return d.toUTCString().match(/[A-Z]+$/);
// Return quoted strings with the surrounding quotes removed
default: return $0.substr(1, $0.length - 2);
}
});
};
/**
* 形成标准的 format 例如:"yyyy/MM/dd" 'yyyy-MM-dd HH:mm:ss'
* @param {日期字符串|日期时间戳|Date} date
* @param {日期格式化字符串} format
*/
function OrgDate (date, format) {
if (!date) {
date = new Date();
}
//默认标准 '2001/05/23'
if (format == undefined || format == null || format == '') {
format = "yyyy-MM-dd";
}
switch (typeof date) {
case "string":
date = new Date(date.replace(/-/g, "/"));
break;
case "number":
date = new Date(date);
break;
}
return date.format(format);
}
/**
* parse() 方法可解析一个日期时间字符串,并返回 1970/1/1 午夜距离该日期时间的毫秒数
* @param {字符串:1970/1/1} d1
* @param {字符串:1970/1/1} d2
*/
function CompareDate (d1, d2) {
d1 = d1.replace(/-/g, "/");
d2 = d2.replace(/-/g, "/");
if (Date.parse(d1) - Date.parse(d2) == 0) {
return 0; //相等
}
if (Date.parse(d1) - Date.parse(d2) > 0) {
return 1; //结束日期 大于 开始日期
}
if (Date.parse(d1) - Date.parse(d2) < 0) {
return -1; //结束日期 小于 开始日期
}
}
/**
* 返回相距的天数
* @param {日期字符串|日期时间戳|Date} d1
* @param {日期字符串|日期时间戳|Date} d2
*/
function GetDateDiffDay(d1, d2) {
var s1 = new Date(OrgDate(d1));
var s2 = new Date(OrgDate(d2));
var time = s2.getTime() - s1.getTime();
return parseInt(time / (1000 * 60 * 60 * 24));
}
/**
* 返回 "yyyy-MM-dd"
* @param {日期字符串|日期时间戳|Date} date
* @param {数字} day
*/
function addDays(date, day) {
date = OrgDate(date);
if (day == undefined || day == null || day == '') {
day = 0;
}
var dy = new Date(date);
dy.setDate(dy.getDate() + day);
return dy.format("yyyy-MM-dd");
}
/**
* 获得两个日期之间所有的日期
* @param {日期字符串|日期时间戳|Date} start
* @param {日期字符串|日期时间戳|Date} end
*/
function getBetweenDate(start, end) {
var collection = [];
var startTime = new Date(OrgDate(start) );
var endTime = new Date(OrgDate(end));
while ((endTime.getTime() - startTime.getTime()) >= 0) {
startTime.setDate(startTime.getDate() + 1);
collection.push(addDays(startTime));
}
return collection;
}
/**
* 把形如 /Date("1428242411122")/ 的日期格式转为date
* @param {'/Date("1428242411122")/''} jsondate
*/
function ConvertJSONDateToJSDateObject(jsondate) {
var date = new Date(parseInt(jsondate.replace("/Date(", "").replace(")/", ""), 10));
return date;
}
/**
* 获得 网络时间 利用ajax;
*/
function getServerDate() {
return new Date($.ajax({ async: false }).getResponseHeader("Date"));
}
/**
* javascript 网页中实现一个计算当年还剩多少时间的倒数计时程序
*/
function counter() {
var date = new Date();
var year = date.getFullYear();
var date2 = new Date(year, 11, 30, 23, 59, 59); // 年底
/*转换成秒*/
var time = (date2 - date) / 1000; //一共剩余多少秒
var day = Math.floor(time / (24 * 60 * 60))
var hour = Math.floor(time % (24 * 60 * 60) / (60 * 60))
var minute = Math.floor(time % (24 * 60 * 60) % (60 * 60) / 60);
var second = Math.floor(time % (24 * 60 * 60) % (60 * 60) % 60);
var str = year + "年还剩" + day + "天" + hour + "时" + minute + "分" + second + "秒";
console.log(str);
}
// window.setInterval("counter()", 1000);
/**
*
* @param {日期字符串|日期时间戳|Date} time
*/
function ChangeDateFormatDateTime(time) {
if (time != null) {
var date = new Date(OrgDate(time));
return date.format("yyyy-MM-dd HH:mm:ss");
}
return "";
}
/**
*
* @param {日期字符串|日期时间戳|Date} time
*/
function ChangeDateFormatDate(time) {
if (time != null) {
var date = new Date(OrgDate(time));
return date.format("yyyy-MM-dd");
}
return "";
}
// 在一个日期上添加天数
function addDateFormat(date, days) {
if (typeof (date) == 'string') {//ie浏览器兼容问题
date = (date + '').replace(/-/g, "/");
}
if (days == undefined || days == '') {
days = 0;
}
var date = new Date(date);
date.setDate(date.getDate() + days);
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
month = month < 10 ? '0' + month : month;
day = day < 10 ? '0' + day : day;
return year + '-' + month + '-' + day;
}
//获取上个月的第一天和最后一天
function getLastDate () {
var nowdays = new Date();
var year = nowdays.getFullYear();
var month = nowdays.getMonth();
if (month === 0) {
month = 12;
year = year - 1;
}
if (month < 10) {
month = '0' + month;
}
//上个月的第一天
var firstDayOfPreMonth = year + '-' + month + '-' + '01';
var lastDay = new Date(year, month, 0);
//上个月的最后一天
var lastDayOfPreMonth = year + '-' + month + '-' + lastDay.getDate();
return [firstDayOfPreMonth, lastDayOfPreMonth];
}

2530

被折叠的 条评论
为什么被折叠?



