UNPKG

@nutui/nutui-react

Version:

京东风格的轻量级移动端 React 组件库,支持一套代码生成 H5 和小程序

238 lines (237 loc) 7.76 kB
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array"; export var Utils = { /** * 是否为闫年 * @return {Boolse} true|false */ isLeapYear: function isLeapYear(y) { return y % 4 === 0 && y % 100 !== 0 || y % 400 === 0; }, /** * 返回星期数 * @return {String} */ getWhatDay: function getWhatDay(year, month, day) { var date = new Date("".concat(year, "/").concat(month, "/").concat(day)); var index = date.getDay(); var dayNames = [ '星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六' ]; return dayNames[index]; }, /** * 返回上一个月在当前面板中的天数 * @return {Number} */ getMonthPreDay: function getMonthPreDay(year, month) { var date = new Date("".concat(year, "/").concat(month, "/01")); var day = date.getDay(); if (day === 0) { day = 7; } return day; }, /** * 返回月份天数 * @return {Number} */ getMonthDays: function getMonthDays(year, month) { if (/^0/.test(month)) { month = month.split('')[1]; } return [ 0, 31, this.isLeapYear(Number(year)) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ][month]; }, /** * 补齐数字位数 * @return {string} */ getNumTwoBit: function getNumTwoBit(n) { n = Number(n); return (n > 9 ? '' : '0') + n; }, /** * 日期对象转成字符串 * @return {string} */ date2Str: function date2Str(date, split) { split = split || '-'; var y = date.getFullYear(); var m = this.getNumTwoBit(date.getMonth() + 1); var d = this.getNumTwoBit(date.getDate()); return [ y, m, d ].join(split); }, /** * 返回日期格式字符串 * @param {Number} 0返回今天的日期、1返回明天的日期,2返回后天得日期,依次类推 * @return {string} '2014-12-31' */ getDay: function getDay(i) { i = i || 0; var date = new Date(); var diff = i * (1000 * 60 * 60 * 24); date = new Date(date.getTime() + diff); return this.date2Str(date); }, /** * 时间比较 * @return {Boolean} */ compareDate: function compareDate(date1, date2) { var startTime = new Date(date1.replace('-', '/').replace('-', '/')); var endTime = new Date(date2.replace('-', '/').replace('-', '/')); if (startTime >= endTime) { return false; } return true; }, /** * 时间是否相等 * @return {Boolean} */ isEqual: function isEqual(date1, date2) { var startTime = new Date((date1 || '').replace(/-/g, '/')).getTime(); var endTime = new Date(date2.replace(/-/g, '/')).getTime(); if (startTime === endTime) { return true; } return false; }, getMonthWeek: function getMonthWeek(year, month, date) { var firstDayOfWeek = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; var dateNow = new Date(Number(year), parseInt(month) - 1, Number(date)); var w = dateNow.getDay() // 星期数 ; var d = dateNow.getDate(); var remainder = 6 - w; if (firstDayOfWeek !== 0) { w = w === 0 ? 7 : w; remainder = 7 - w; } return Math.ceil((d + remainder) / 7); }, getYearWeek: function getYearWeek(year, month, date) { var firstDayOfWeek = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; var dateNow = new Date(Number(year), parseInt(month) - 1, Number(date)); var dateFirst = new Date(Number(year), 0, 1); var dataNumber = Math.round((dateNow.valueOf() - dateFirst.valueOf()) / 86400000); return Math.ceil((dataNumber + (dateFirst.getDay() + 1 - 1)) / 7); }, getWeekDate: function getWeekDate(year, month, date) { var firstDayOfWeek = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 0; var dateNow = new Date(Number(year), parseInt(month) - 1, Number(date)); var nowTime = dateNow.getTime(); var day = dateNow.getDay(); if (firstDayOfWeek === 0) { var oneDayTime = 24 * 60 * 60 * 1000; // 显示周日 var SundayTime = nowTime - day * oneDayTime // 本周的周日 ; // 显示周六 var SaturdayTime = nowTime + (6 - day) * oneDayTime // 本周的周六 ; var sunday = this.date2Str(new Date(SundayTime)); var saturday = this.date2Str(new Date(SaturdayTime)); return [ sunday, saturday ]; } day = day === 0 ? 7 : day; var oneDayTime1 = 24 * 60 * 60 * 1000; // 显示周一 var MondayTime = nowTime - (day - 1) * oneDayTime1 // 本周的周一 ; // 显示周日 var SundayTime1 = nowTime + (7 - day) * oneDayTime1 // 本周的周日 ; var monday = this.date2Str(new Date(MondayTime)); var sunday1 = this.date2Str(new Date(SundayTime1)); return [ monday, sunday1 ]; }, formatResultDate: function formatResultDate(date) { var days = _to_consumable_array(date.split('-')); days[2] = Utils.getNumTwoBit(Number(days[2])); days[3] = "".concat(days[0], "-").concat(days[1], "-").concat(days[2]); days[4] = Utils.getWhatDay(+days[0], +days[1], +days[2]); return days; } }; // 获取当前月数据 export var getCurrMonthData = function(type, year, month) { switch(type){ case 'prev': month === 1 && (year -= 1); month = month === 1 ? 12 : --month; break; case 'next': month === 12 && (year += 1); month = month === 12 ? 1 : ++month; break; default: break; } return [ year, Utils.getNumTwoBit(month), Utils.getMonthDays(String(year), String(month)) ]; }; // 获取日期状态 export var getDaysStatus = function(type, year, month) { var days = Utils.getMonthDays("".concat(year), "".concat(month)); // 修复:当某个月的1号是周日时,月份下方会空出来一行 if (type === 'prev' && days >= 7) { days -= 7; } return Array.from(Array(days), function(v, k) { return { day: k + 1, type: type, year: year, month: month }; }); }; // 获取上一个月的最后一周天数,填充当月空白 export var getPreMonthDates = function(type, year, month, firstDayOfWeek) { var preMonth = +month - 1; var preYear = year; if (preMonth <= 0) { preMonth = 12; preYear += 1; } var days = Utils.getMonthPreDay(+year, +month); days -= firstDayOfWeek; // 修复:当某个月的1号是周日时,月份下方会空出来一行 if (type === 'prev' && days >= 7) { days -= 7; } var preDates = Utils.getMonthDays("".concat(preYear), "".concat(preMonth)); var months = Array.from(Array(preDates), function(v, k) { return { day: k + 1, type: type, preYear: preYear, preMonth: preMonth }; }); return months.slice(preDates - days); };