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) { /// 格式化指定日期 /// 格式化字符串 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 (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) { /// 获得date1到date2之间隔了多少天 return Math.floor((exports.trimToDay(exports.toDate(date2)).getTime() - exports.trimToDay(exports.toDate(date1)).getTime()) / 1000 / 60 / 60 / 24); } exports.format24hTo12h = function (str) { /// 将24小时制式时间转换为12小时制式 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) { /// 将“小时:分钟”格式的时间标签转换为分钟 return /0*(\d+)\s*:\s*0*(\d+)/.exec(value) ? (parseInt(RegExp.$1, 10) * 60 + parseInt(RegExp.$2)) : 0; }; exports.formatMinutesToShortStr = function (minutes) { /// 将分钟格式化为时间字符串 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; }); }; $.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; }; });