UNPKG

beyond-datetime

Version:
215 lines (193 loc) 6.21 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.addMonth = addMonth; exports.setMonth = setMonth; exports.addYear = addYear; exports.setYear = setYear; exports.daysInMonth = daysInMonth; exports.isSameTime = isSameTime; exports.isSameDate = isSameDate; exports.isSameYearAndMonth = isSameYearAndMonth; exports.getDatesInCalendarMonth = getDatesInCalendarMonth; exports.isBetween = isBetween; exports.getInitTime = getInitTime; exports.syncTime = syncTime; exports.isOrderedDates = isOrderedDates; exports.orderRange = orderRange; exports.isDate = isDate; exports.getYearRange = getYearRange; exports.cloneDate = cloneDate; var Weeks = exports.Weeks = ['一', '二', '三', '四', '五', '六', '日']; var Months = exports.Months = ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月']; var GlobalWeeks = exports.GlobalWeeks = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']; var GlobalMonths = exports.GlobalMonths = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']; var languages = exports.languages = { en: { 'ok': 'Ok', 'today': 'Today', 'yesterday': 'Yesterday', 'sevenDays': '7 days', 'thirtyDays': '30 days' }, cn: { 'ok': '确定', 'today': '今天', 'yesterday': '昨天', 'sevenDays': '最近7天', 'thirtyDays': '最近30天' } //今天 昨天 最近7天 最近30天 };function addMonth(date, offset) { date = cloneDate(date); date.setMonth(date.getMonth() + offset); return date; } function setMonth(date, month) { date = cloneDate(date); date.setMonth(month); return date; } function addYear(date, offset) { date = cloneDate(date); date.setFullYear(date.getFullYear() + offset); return date; } function setYear(date, year) { date = cloneDate(date); date.setFullYear(year); return date; } function daysInMonth(date) { var year = date.getFullYear(); var month = date.getMonth(); return new Date(year, month + 1, 0).getDate(); } function isSameTime(date1, date2) { if (isDate(date1) && isDate(date2)) { return date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes() && date1.getSeconds() === date2.getSeconds(); } else { return false; } } function isSameDate(date1, date2) { return isSameYearAndMonth(date1, date2) && date1.getDate() === date2.getDate(); } function isSameYearAndMonth(date1, date2) { return isDate(date1) && isDate(date2) && date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth(); } /** * * @param {Date} date * @param {Date} timeDate * @return {Date[]} */ function getDatesInCalendarMonth(date, timeDate) { var dates = []; var monthDaysCount = daysInMonth(date); var startMonthDate = cloneDate(date); //.setDate(1) startMonthDate.setDate(1); if (timeDate) { startMonthDate.setHours(timeDate.getHours()); startMonthDate.setMinutes(timeDate.getMinutes()); startMonthDate.setSeconds(timeDate.getSeconds()); } var lastMonthDaysCount = (startMonthDate.getDay() || 7) - 1; for (var i = lastMonthDaysCount; i > 0; i--) { var _date = cloneDate(startMonthDate); _date.setDate(_date.getDate() - i); dates.push(_date); } for (var _i = 1; _i <= monthDaysCount; _i++) { var _date2 = cloneDate(startMonthDate); _date2.setDate(_i); dates.push(_date2); } var nextMonthDaysCount = 42 - dates.length; if (nextMonthDaysCount > 0) { var nextMonthDate = cloneDate(startMonthDate); nextMonthDate.setMonth(nextMonthDate.getMonth() + 1); nextMonthDate.setDate(1); for (var _i2 = 1; _i2 <= nextMonthDaysCount; _i2++) { var _date3 = cloneDate(nextMonthDate); _date3.setDate(_i2); dates.push(_date3); } } return dates; } function isBetween(date, minDate, maxDate) { var result = null; if (isDate(date)) { if (isDate(minDate)) { result = +date >= +minDate; } if (isDate(maxDate)) { result = result != null ? result && +date <= +maxDate : +date <= +maxDate; } } return result; } function getInitTime(date) { date = isDate(date) ? new Date(date) : new Date(); date.setHours(0); date.setMinutes(0); date.setSeconds(0); return date; } function syncTime(date, timeDate) { if (isDate(date) && isDate(timeDate)) { date = cloneDate(date); date.setHours(timeDate.getHours()); date.setMinutes(timeDate.getMinutes()); date.setSeconds(timeDate.getSeconds()); } return date; } function isOrderedDates(date1, date2) { if (isDate(date1) && isDate(date2)) { date1 = syncTime(date1, getInitTime()); date2 = syncTime(date2, getInitTime()); return +date1 <= +date2; } } /** * * @param {Date} startDate * @param {Date} endDate * @return {{startDate : Date, endDate : Date}} */ function orderRange(startDate, endDate) { if (isDate(startDate) && isDate(endDate) && !isOrderedDates(startDate, endDate)) { var tmp = startDate; startDate = endDate; endDate = tmp; } return { startDate: startDate, endDate: endDate }; } function isDate(date) { return date && Object.prototype.toString.call(date) === '[object Date]' && date.toString() !== 'Invalid Date'; } function getYearRange(date) { if (!isDate(date)) { date = new Date(); } var currentYear = date.getFullYear(); var startYear = Math.max(currentYear - 45, 1970); var endYear = currentYear + 10; return { startYear: startYear, endYear: endYear }; } function cloneDate() { for (var _len = arguments.length, dates = Array(_len), _key = 0; _key < _len; _key++) { dates[_key] = arguments[_key]; } var len = dates.length; for (var i = 0; i < len; i++) { var date = dates[i]; if (isDate(date)) { return new Date(date); } } return null; }