/*! * @author atongmu * date 11/07/2019 * description The project tool function file. */ /** * @description 时间格式处理 */ //import { Toast } from "vant"; export const formatData = (data) => { let thisData = formatTime(new Date(), "yyyy-MM-dd"); let myData = data.substr(0, 10); if (thisData == myData) { let Time = data.substr(11, 5); return Time } else { if (thisData.substr(0, 4) == myData.substr(0, 4) && thisData != myData) { let Data = data.substr(5, 11); return Data } else { let Year = myData; return Year } } } /** * @description 时间格式转化 * @param {String} date 日期 * @param {String} fmt 需要的格式 */ export const formatTime = (date, fmt) => { let o = { "M+": date.getMonth() + 1, //月份 "d+": date.getDate(), //日 "h+": date.getHours(), //小时 "m+": date.getMinutes(), //分 "s+": date.getSeconds(), //秒 "q+": Math.floor((date.getMonth() + 3) / 3), //季度 "S": date.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length)); for (let 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; } export const dataTime = (data, isTrue) => { var date = new Date(data); let Y = date.getFullYear() + '-'; let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; let D = date.getDate() + ' '; let h = date.getHours() + ':'; let m = date.getMinutes() + ':'; let s = date.getSeconds(); let str = Y + M + D if (isTrue) { str = Y + M + D + h + m + s } else { str = Y + M + D } return str } export const dataTimeEx = (data, isTrue) => { var date = new Date(data); let Y = date.getFullYear() + '-'; let M = ((date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '').padStart(2, '0') + '-'; let D = (date.getDate() + '').padStart(2, '0') + ' '; let h = (date.getHours() + '').padStart(2, '0') + ':'; let m = (date.getMinutes() + '').padStart(2, '0') + ':'; let s = (date.getSeconds() + '').padStart(2, '0'); let str = Y + M + D if (isTrue) { str = Y + M + D + h + m + s } else { str = Y + M + D } return str } /** * @description 验证手机号格式是否正确 * @param {String} mobile 电话号码 */ export const checkMobileformat = mobile => /^1[345789]\d{9}$/.test(mobile); /** * @description Array clear empty item. * @param {Array} array */ export const arrayClearEmptyItem = array => { return array.filter(item => item); } /** * @description 判断一个日期是过去还是未来 * @param {String} d 要判断的日期 * @returns past => false future => true */ export const judgeDateIsPastOrFuture = (d) => { if (!d) { return false; } const nowDate = new Date(); const nowTimeStamp = nowDate.getTime(); const date = new Date(d.replace(/-/g, "/")); const dateTimeStamp = date.getTime(); return nowTimeStamp < dateTimeStamp; } /** * @description 判断一个字符串中是否有重复的项(0-9, a-z, A-Z) * @param {String} str 判断的目标字符串 * @returns {Boolean} true: 有重复项 false: 无重复项 */ export const strIsReplace = str => { const passwordRule = /[0-9a-zA-Z]/; const arr = str.split(""); for (let i = 0; i < arr.length; i++) { const element = arr[i]; if (passwordRule.test(element)) { if (i === arr.length - 1) { return false; } if (str.includes(element, i + 1)) { return true; } } } return false; } // 设置localStorage export const setStorage = function (key, obj) { let json = JSON.stringify(obj) window.localStorage.setItem(key, json) // console.log('设置语言', key, json) } // 获取localStorage export const getStorage = function (key) { const str = window.localStorage.getItem(key) if (!str) { return null } return JSON.parse(str) } // 移除localStorage export const removeStorage = function (key) { window.localStorage.removeItem(key) } // 设置sessionStorage export const setSessionStorage = function (key, obj) { let json = JSON.stringify(obj) window.sessionStorage.setItem(key, json) // console.log('设置语言', key, json) } // 获取sessionStorage export const getSessionStorage = function (key) { const str = window.sessionStorage.getItem(key) if (!str) { return null } return JSON.parse(str) } // 获取浏览器默认语言 export const getBrowserLang = function () { let browserLang = navigator.language ? navigator.language : navigator.browserLanguage let defaultBrowserLang = '' if (browserLang.toLowerCase() === 'cn' || browserLang.toLowerCase() === 'zh' || browserLang.toLowerCase() === 'zh-cn') { defaultBrowserLang = 'CN' } else { defaultBrowserLang = 'en' } return defaultBrowserLang } export const fixDate = (val, i18n) => { // 保留两位小数 const value = val / 1 if (isNaN(value)) { return '--' } if (i18n.locale === 'CN' || i18n.locale === 'zh-CN') { if ((value / 10000).toString().split('.')[0].length <= 4) { return (value / 10000).toFixed(2) + ' ' + i18n.t('万') } else { return (value / 100000000).toFixed(2) + ' ' + i18n.t('亿') } } else { if ((value / 1000000).toString().split('.')[0].length <= 4) { return (value / 1000000).toFixed(2) + ' ' + 'M' } else { return (value / 1000000000).toFixed(2) + ' ' + 'B' } } } export const debounce = (fn, delay = 500) => { // timer 是在闭包中的 let timer = null; return function () { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { fn.apply(this, arguments) timer = null }, delay) } } export const changeTheme = (theme) => { if ((navigator.userAgent).indexOf('Html5Plus') > -1) { if (theme == 'light') { plus.navigator.setStatusBarBackground('#ffffff'); plus.navigator.setStatusBarStyle('dark'); // 只能是dark 和 light } else { plus.navigator.setStatusBarBackground('#121212'); plus.navigator.setStatusBarStyle('light'); // 只能是dark 和 light } } else { let meta = document.querySelector('meta[name="theme-color"]'); if (theme == 'light') { meta.setAttribute('content', '#fff'); } else { meta.setAttribute('content', '#121212'); } } } /** * 生成随机数 */ export function getRandom() { return Math.floor(Math.random() * 10) } /** * @description 科学计数法转为string * @param {string, number} param */ export function scientificNotationToString(param) { let strParam = String(param) let flag = /e/.test(strParam) if (!flag) return param // 指数符号 true: 正,false: 负 let sysbol = true if (/e-/.test(strParam)) { sysbol = false } // 指数 let index = Number(strParam.match(/\d+$/)[0]) // 基数 let basis = strParam.match(/^[\d\.]+/)[0].replace(/\./, '') if (sysbol) { return basis.padEnd(index + 1, 0) } else { return basis.padStart(index + basis.length, 0).replace(/^0/, '0.') } }