// 数字转汉字方法 export const numToZh = num => { if (!num && num !== 0) return '' const chnNumChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'] const chnUnitSection = ['', '万', '亿', '万亿', '亿亿'] const chnUnitChar = ['', '十', '百', '千'] const numToChn = num => { const index = num.toString().indexOf('.') if (index !== -1) { const str = num.toString().slice(index) let a = '点' for (let i = 1; i < str.length; i++) { a += chnNumChar[parseInt(str[i])] } return a } else { return '' } } // 定义在每个小节的内部进行转化的方法,其他部分则与小节内部转化方法相同 const sectionToChinese = section => { let str = '' let chnstr = '' let zero = false let count = 0 // zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零 while (section > 0) { var v = section % 10 // 对数字取余10,得到的数即为个位数 if (v === 0) { // 如果数字为零,则对字符串进行补零 if (zero) { zero = false // 如果遇到连续多次取余都是0,那么只需补一个零即可 chnstr = chnNumChar[v] + chnstr } } else { zero = true // 第一次取余之后,如果再次取余为零,则需要补零 str = chnNumChar[v] str += chnUnitChar[count] chnstr = str + chnstr } count++ section = Math.floor(section / 10) } return chnstr } const a = numToChn(num) num = Math.floor(num) let unitPos = 0 let strIns = '' let chnStr = '' let needZero = false if (num === 0) { return chnNumChar[0] } while (num > 0) { const section = num % 10000 if (needZero) { chnStr = chnNumChar[0] + chnStr } strIns = sectionToChinese(section) strIns += section !== 0 ? chnUnitSection[unitPos] : chnUnitSection[0] chnStr = strIns + chnStr needZero = section < 1000 && section > 0 num = Math.floor(num / 10000) unitPos++ } let result = chnStr + a const temp = result.split('') if (temp[0] === '一' && temp[1] === '十') { temp.splice(0, 1) result = temp.join('') } return result } // 活动类型 export const seasonType = type => { return type ? '密训营' : '实战营' } // 时间戳转换 export function dateFormatter(timestamp, fmt) { fmt = fmt || "yyyy-MM-dd"; if (typeof timestamp === "string") { timestamp = timestamp.replace(/-/g, '/') } const $this = new Date(timestamp); const o = { "M+": $this.getMonth() + 1, "d+": $this.getDate(), "h+": $this.getHours(), "m+": $this.getMinutes(), "s+": $this.getSeconds(), "q+": Math.floor(($this.getMonth() + 3) / 3), S: $this.getMilliseconds() }; if (/(y+)/.test(fmt)) { fmt = fmt.replace( RegExp.$1, ($this.getFullYear() + "").substr(4 - RegExp.$1.length) ); } 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; } // 倒计时 export const countDown = (s1, s2) => { const _c = n => n < 10 ? `0${n}` : n let max = Math.max(s1, s2) let min = Math.min(s1, s2) const _x = Math.floor((max - min) / 1000) let d = Math.floor(_x / 86400) let h = Math.floor((_x % 86400) / 3600) let m = Math.floor((_x - 86400 * d - h * 3600) / 60) let s = Math.floor(_x - 86400 * d - h * 3600 - m * 60) return `${_c(d)}天${_c(h)}时${_c(m)}分${_c(s)}秒` } export const getName = value => { return name.length > 10 ? name.slice(0, 10) + '...' : name; } // 活动类型 export const activityType = t => { t = Number(t) return t ? '密训营' : '实战营' }