@tarojs/components
Version:
143 lines (142 loc) • 3.11 kB
JavaScript
function getTimeRange(begin, end) {
const range = [];
for (let i = begin; i <= end; i++) {
range.push(`${i < 10 ? '0' : ''}${i}`);
}
return range;
}
export const hoursRange = [
'20',
'21',
'22',
'23',
...getTimeRange(0, 23),
'00',
'01',
'02',
'03'
];
export const minutesRange = [
'56',
'57',
'58',
'59',
...getTimeRange(0, 59),
'00',
'01',
'02',
'03'
];
/**
* 校验传入的 value 是否合法
*/
export function verifyValue(value, range) {
if (!isNaN(+value) && value >= 0 && value < range.length)
return true;
return false;
}
/**
* 检验传入的 time value 是否合法
*/
export function verifyTime(value) {
if (!/^\d{1,2}:\d{1,2}$/.test(value))
return false;
const time = value.split(':').map(num => +num);
if (time[0] < 0 || time[0] > 23)
return false;
if (time[1] < 0 || time[1] > 59)
return false;
return true;
}
/**
* 比较时间
* return t1 <= t2
*/
export function compareTime(t1, t2) {
const t1List = t1.split(':').map(i => +i);
const t2List = t2.split(':').map(i => +i);
if (t1List[0] < t2List[0])
return true;
if (t1List[0] === t2List[0] && t1List[1] <= t2List[1])
return true;
return false;
}
/**
* 校验日期合法性,返回合法性和日期数组
*/
export function verifyDate(dateStr) {
if (!dateStr)
return false;
const date = new Date(dateStr.replace(/-/g, '/'));
return isNaN(date.getMonth()) ? false : date;
}
/**
* 获取当月最大天数
*/
function getMaxDay(year, month) {
if (month === 4 || month === 6 || month === 9 || month === 11)
return 30;
if (month === 2) {
if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0)
return 29;
else
return 28;
}
return 31;
}
export function formatValue(value) {
let res;
if (Array.isArray(value)) {
res = value.map(item => String(item));
}
else {
res = value;
}
return res;
}
/**
* 获取时间数组
*/
function getDateRange(start, end) {
const range = [];
for (let i = start; i <= end; i++) {
range.push(i);
}
return range;
}
/**
* 获取年份区间数组
*/
export function getYearRange(start, end) {
return getDateRange(start, end);
}
/**
* 获取月份区间数组
*/
export function getMonthRange(start, end, year) {
let rangeStart = 1;
let rangeEnd = 12;
// 当前年份等于开始年份,由开始对应的月份约束开始值
if (start.getFullYear() === year) {
rangeStart = start.getMonth() + 1;
}
// 当前年份等于结束年份,由结束对应的月份约束结束值
if (end.getFullYear() === year) {
rangeEnd = end.getMonth() + 1;
}
return getDateRange(rangeStart, rangeEnd);
}
/**
* 获取日期区间数组
*/
export function getDayRange(start, end, year, month) {
let rangeStart = 1;
let rangeEnd = getMaxDay(year, month);
if (start.getFullYear() === year && start.getMonth() + 1 === month) {
rangeStart = start.getDate();
}
if (end.getFullYear() === year && end.getMonth() + 1 === month) {
rangeEnd = end.getDate();
}
return getDateRange(rangeStart, rangeEnd);
}