1.格式化时间
/** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q) 可以用 1-2 个占位符 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) * eg: * (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 * (new Date()).Format("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04 * (new Date()).Format("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04 * (new Date()).Format("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04 * (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 */function dateFormat(time=new Date(time),fmt="yyyy-MM-dd HH:mm:ss") { var o = { 'M+': time.getMonth() + 1, //月份 'd+': time.getDate(), //日 'h+': time.getHours() % 12 == 0 ? 12 : time.getHours() % 12, //小时 'H+': time.getHours(), //小时 'm+': time.getMinutes(), //分 's+': time.getSeconds(), //秒 'q+': Math.floor((time.getMonth() + 3) / 3), //季度 S: time.getMilliseconds(), //毫秒 }; var week = { '0': '/u65e5', '1': '/u4e00', '2': '/u4e8c', '3': '/u4e09', '4': '/u56db', '5': '/u4e94', '6': '/u516d', }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (time.getFullYear() + '').substr(4 - RegExp.$1.length)); } if (/(E+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length > 1 ? (RegExp.$1.length > 2 ? '/u661f/u671f' : '/u5468') : '') + week[time.getDay() + '']); } for (var k in o) { if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length)); } } return fmt;}
2. 时间分段
/*** @description: 时间分段* @param {Date} startDate 开始时间* @param {type} endDate 结束时间* @param {Number} amount 分割段数* @return {Array} temp 分割后返回的数组* @author: wangchaoxu*/function splitTime(startDate, endDate, amount) { var startTime = new Date(startDate + ' 00:00:00'), endTime = new Date(endDate + ' 23:59:59'), gap = (endTime - startTime) / amount; var temp = []; for (var i = 0; i < amount; i++) { startTime.setMilliseconds(startTime.getMilliseconds() + gap); temp[i] = new Date(startTime.getTime()); } return temp;}var d = splitTime('2017-10-01', '2017-10-10', 5);//返回结果/* ["2017-10-02T15:59:59.800Z", * "2017-10-04T15:59:59.600Z", * "2017-10-06T15:59:59.400Z", * "2017-10-08T15:59:59.200Z", * "2017-10-10T15:59:59.000Z"] */
3.dayOfYear:当前日期天数
const dayOfYear = date =>Math.floor((date - new Date(date.getFullYear(), 0, 0)) / 1000 / 60 / 60 / 24); dayOfYear(new Date()); // 285
4. forOwn:迭代属性并执行回调
const forOwn = (obj, fn) => Object.keys(obj).forEach(key => fn(obj[key], key, obj));forOwn({ foo: 'bar', a: 1 }, v => console.log(v)); // 'bar', 1
5. Get Time From Date:返回当前24小时制时间的字符串
const getColonTimeFromDate = date => date.toTimeString().slice(0, 8);getColonTimeFromDate(new Date()); // "08:38:00"
6. Get Days Between Dates:返回日期间的天数
const getDaysDiffBetweenDates = (dateInitial, dateFinal) =>(dateFinal - dateInitial) / (1000 * 3600 * 24); getDaysDiffBetweenDates(new Date('2019-01-01'), new Date('2019-10-14')); // 286
7. is:检查值是否为特定类型。
const is = (type, val) => ![, null].includes(val) && val.constructor === type;is(Array, [1]); // trueis(ArrayBuffer, new ArrayBuffer()); // trueis(Map, new Map()); // trueis(RegExp, /./g); // trueis(Set, new Set()); // trueis(WeakMap, new WeakMap()); // trueis(WeakSet, new WeakSet()); // trueis(String, ''); // trueis(String, new String('')); // trueis(Number, 1); // trueis(Number, new Number(1)); // trueis(Boolean, true); // trueis(Boolean, new Boolean(true)); // true
8. isAfterDate:检查是否在某日期后
const isAfterDate = (dateA, dateB) => dateA > dateB; isAfterDate(new Date(2010, 10, 21), new Date(2010, 10, 20)); // true
9. isBeforeDate:检查是否在某日期前
const isBeforeDate = (dateA, dateB) => dateA < dateB;isBeforeDate(new Date(2010, 10, 20), new Date(2010, 10, 21)); // true
10 tomorrow:获取明天的字符串格式时间
const tomorrow = () => { let t = new Date(); t.setDate(t.getDate() + 1); return t.toISOString().split('T')[0];};tomorrow(); // 2019-10-15 (如果明天是2019-10-15)