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 + "分钟" : "");
};
$.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;
};
});