196 lines
5.9 KiB
JavaScript
196 lines
5.9 KiB
JavaScript
define(function (require, exports, module) {
|
|
exports.trimToDay = function (d) {
|
|
d = d || new Date();
|
|
if (!(d instanceof Date)) {
|
|
d = new Date(d + '');
|
|
}
|
|
|
|
return new Date(d.getFullYear(), d.getMonth(), d.getDate());
|
|
};
|
|
//exports.addDays = function (date, days) {
|
|
// var x = new Date();
|
|
// x.setTime(date.getTime() - date.getTime() % (1000 * 3600 * 24) + 1000 * 3600 * 24 * days);
|
|
// return x;
|
|
//};
|
|
exports.addDays = function (date, offset) {
|
|
date = exports.toDate(date);
|
|
return new Date(date.getFullYear(), date.getMonth(), date.getDate() + offset);
|
|
};
|
|
exports.addMonths = function (date, offset) {
|
|
date = exports.toDate(date);
|
|
return new Date(date.getFullYear(), date.getMonth() + offset, date.getDate());
|
|
};
|
|
exports.toDate = function (date) {
|
|
if (date instanceof Date)
|
|
return date;
|
|
|
|
var time = Date.parse(date);
|
|
if (isNaN(time))
|
|
return null;
|
|
return new Date(time);
|
|
};
|
|
exports.formatDate = function (date, format) {
|
|
/// <summary>格式化指定日期</summary>
|
|
/// <param name="format" type="String">格式化字符串</param>
|
|
if (!date)
|
|
return "";
|
|
|
|
date = exports.toDate(date);
|
|
|
|
format = format || "yyyy-MM-dd";
|
|
var o = {
|
|
"M+": date.getMonth() + 1, //month
|
|
"d+": date.getDate(), //day
|
|
"h+": date.getHours(), //hour
|
|
"m+": date.getMinutes(), //minute
|
|
"s+": date.getSeconds(), //second
|
|
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
|
|
"S": date.getMilliseconds() //millisecond
|
|
};
|
|
|
|
if (/(y+)/i.test(format)) {
|
|
format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
|
|
}
|
|
|
|
for (var k in o) {
|
|
if (o.hasOwnProperty(k)) {
|
|
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;
|
|
};
|
|
exports.formatSellDate = function (date) {
|
|
date = exports.toDate(date);
|
|
var today = exports.addDays(new Date(), 0);
|
|
|
|
var offset = Math.floor((date - today) / 1000 / 60);
|
|
var hour = Math.floor(offset / 60);
|
|
var minute = offset % 60;
|
|
|
|
if (hour < 24) return "今天" + hour + "点" + (minute ? minute + "分" : "");
|
|
else if (hour < 72) {
|
|
return ["明天", '后天', '大后天'][Math.floor(hour / 24) - 1] + (hour % 24) + "点" + (minute ? minute + "分" : "");
|
|
} else {
|
|
return exports.formatDate(date, "MM月dd日 hh:mm");
|
|
}
|
|
};
|
|
window.f = exports.formatSellDate;
|
|
exports.getDaysDifference = function (date1, date2) {
|
|
/// <summary>获得date1到date2之间隔了多少天</summary>
|
|
|
|
return Math.floor((exports.trimToDay(exports.toDate(date2)).getTime() - exports.trimToDay(exports.toDate(date1)).getTime()) / 1000 / 60 / 60 / 24);
|
|
}
|
|
exports.format24hTo12h = function (str) {
|
|
/// <summary>将24小时制式时间转换为12小时制式</summary>
|
|
if (!str)
|
|
return '';
|
|
|
|
var args = str.split('/');
|
|
return args.map(function (t) {
|
|
if (!/0?(\d{1,2}):(\d{1,2})/.exec(t))
|
|
return "";
|
|
|
|
var h = parseInt(RegExp.$1, 10);
|
|
return h < 13 ? "上午" + h + ":" + RegExp.$2 : "下午" + (h - 12) + ":" + RegExp.$2;
|
|
|
|
});
|
|
};
|
|
exports.selectTrain = function (trainList, trainFilter, seatOrder, seatFirst, count) {
|
|
var seat, train;
|
|
if (seatFirst) {
|
|
//席别优先
|
|
seat = _.find(seatOrder, function (s) {
|
|
var treg = _.find(trainFilter, function (t) {
|
|
train = _.find(trainList, function (item) {
|
|
return t.test(item.code) && (_.findWhere(item.tickets, { code: s }) || {}).count >= count;
|
|
});
|
|
return typeof (train) != 'undefined';
|
|
});
|
|
return typeof (treg) != 'undefined';
|
|
});
|
|
} else {
|
|
//车次优先
|
|
_.find(trainFilter, function (t) {
|
|
seat = _.find(seatOrder, function (s) {
|
|
train = _.find(trainList, function (item) {
|
|
return t.test(item.code) && (_.findWhere(item.tickets, { code: s }) || {}).count >= count;
|
|
});
|
|
return typeof (train) != 'undefined';
|
|
});
|
|
return typeof (seat) != 'undefined';
|
|
});
|
|
}
|
|
|
|
if (seat)
|
|
return { seat: seat, train: train };
|
|
return null;
|
|
};
|
|
exports.getVcValidate = function (vc) {
|
|
return vc + " " + new Date().toLocaleString() + " keyup " + JSON.stringify({ keyCode: vc.charCodeAt(vc.length - 1) });
|
|
};
|
|
exports.parseTimeSpanToMinutes = function (value) {
|
|
/// <summary>将“小时:分钟”格式的时间标签转换为分钟</summary>
|
|
return /0*(\d+)\s*:\s*0*(\d+)/.exec(value) ? (parseInt(RegExp.$1, 10) * 60 + parseInt(RegExp.$2)) : 0;
|
|
};
|
|
exports.formatMinutesToShortStr = function (minutes) {
|
|
/// <summary>将分钟格式化为时间字符串</summary>
|
|
|
|
var days = 0;
|
|
var hours = Math.floor(minutes / 60);
|
|
minutes = minutes % 60;
|
|
|
|
return (days > 0 ? days + "天" : "") + (hours > 0 ? hours + "小时" : "") + (minutes > 0 ? minutes + "分钟" : "");
|
|
};
|
|
|
|
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' },
|
|
matchHTML = /&(?!#?\w+;)|<|>|"|'|\//g;
|
|
exports.htmlEncode = function (str) {
|
|
return str.replace(matchHTML, function(m) {
|
|
return encodeHTMLRules[m] || m;
|
|
});
|
|
};
|
|
/*
|
|
* 分析时间字符串,并转换为相当于当天的秒数
|
|
*/
|
|
exports.toTimeSpan = function (str, includeHour) {
|
|
|
|
includeHour = typeof includeHour === 'undefined' ? true : includeHour;
|
|
|
|
var m = /(\d{1,2}):(\d{1,2})(:(\d{1,2}))?/i.exec(str);
|
|
if (!m) return null;
|
|
|
|
var th = m[4] || includeHour ? parseInt(m[1], 10) : 0;
|
|
var tm = parseInt(m[2], 10);
|
|
var ts = m[4] && !includeHour ? parseInt(m[4], 10) : 0;
|
|
|
|
return th * 3600 + tm * 60 + ts;
|
|
};
|
|
$.fn.toBase64Data = function () {
|
|
var arr = [];
|
|
this.each(function () {
|
|
if (!this.naturalHeight)
|
|
return;
|
|
|
|
var canvas = document.createElement("canvas");
|
|
var height = this.naturalHeight;
|
|
var width = this.naturalWidth;
|
|
canvas.width = width;
|
|
canvas.height = height;
|
|
var ctx = canvas.getContext("2d");
|
|
ctx.drawImage(this, 0, 0, width, height);
|
|
|
|
var url = canvas.toDataURL();
|
|
delete canvas;
|
|
|
|
arr.push({
|
|
type: "image",
|
|
data: url
|
|
});
|
|
});
|
|
|
|
return arr;
|
|
};
|
|
});
|