``` import moment from'moment'; import'moment/locale/zh-cn'; moment.locale('zh-cn'); /** * 格式float 例如,0 保留2位小数 0.00 | 1.1 保留2位小数 1.10 * @param x 需格式化的值 * @param pos 保留几位小数 */ export function FomatFloat(x: number, pos: number = 2): string { x = x / 100; const f = Math.round(x * Math.pow(10, pos))/Math.pow(10, pos); // pow 幂 let s = f.toString(); let rs = s.indexOf('.'); if(rs < 0){ rs = s.length; s += '.'; } while(s.length <= rs + pos){ s += '0'; } return s; } /** * * 获取时间戳 * value 如不传入默认返回当前时间戳 * @param value string 日期 2019-04-10 * @return number * */ export function Timestamp(value?: string): number { if (value === '') { return 0; } let now = moment.now(); if (value !== undefined) { now = moment(value, 'YYYY-MM-DD HH:mm:ss').valueOf(); } return Math.ceil(now / 1000); } /** * * 时间戳转换日期格式 * @param value number 时间戳 1010101010 * @param format string 日期格式化 * */ export function Timeformat(value: number, format: string = 'YYYY-MM-DD HH:mm:ss'): any { if (value === 0) { return ''; } return moment.unix(value).format(format); } /** * 延迟执行 * @param ms 延迟毫秒数 */ export function sleep(ms: number){ return new Promise((resolve)=>setTimeout(resolve,ms)); } /** *随机数 * @param min number 0 * @param max number 10 * @return number */ export function Rand(min: number, max: number): number { return Math.floor(Math.random() * (max - min)) + min; } /** * 滚动到某个位置回调 * @param callback * @param top */ export function scrollGetData(callback: () => void, top: number = 100) { let status: boolean = true; document.addEventListener("touchstart", () => { document.addEventListener("scroll", (e: any) => { const scrollHeight: number = document.body.scrollHeight; const scrollTop: number = document.documentElement.scrollTop || document.body.scrollTop; console.log(scrollHeight, scrollTop + top) if ((scrollTop + top) > (scrollHeight) && status){ status = false; } }); }); document.addEventListener("touchend", (e: any) => { document.removeEventListener("scroll", () => { console.log('清除scroll 监听') }); if (status === false) { callback(); status = true; } }); } /** * 时间转化 s > hh:mm:ss * @param result */ export function SecondToDate(result: any) { const h = Math.floor(result / 3600) < 10 ? '0' + Math.floor(result / 3600) : Math.floor(result / 3600); const m = Math.floor((result / 60 % 60)) < 10 ? '0' + Math.floor((result / 60 % 60)) : Math.floor((result / 60 % 60)); const s = Math.floor((result % 60)) < 10 ? '0' + Math.floor((result % 60)) : Math.floor((result % 60)); return result = ( h !== '00' ? (h + ':') : '') + m + ':' + s; } ``` # ## 封装浏览器的 Storage ``` // localStorage(本地存储)和sessionStorage(会话存储) import {Timestamp} from './Utils'; // Timestamp // 获取当前时间戳 interface ICacheInterface { /** * 设置缓存 * @param key string 缓存键 * @param value any 缓存值 string | {} | [] * @param exp number 过期时间 默认0永久有效 */ Set(key: string, value: any, exp: number): void; /** * 获取缓存信息 * @param key string * @return any {} | string | [] */ Get(key: string): any; /** * 删除指定key * @param key string 需要删除的键 */ Remove(key: string): void; /** * 清除所有缓存 */ Clear(): void; } class Caches<T> implements ICacheInterface { private cache: any; public constructor(stroage: T) { this.cache = stroage; } /** * 设置缓存 * @param key string 缓存键 * @param value any 缓存值 string | {} | [] * @param exp number 过期时间 默认0永久有效 */ public Set(key: string, value: any, exp: number = 0): void { if (exp > 0) { exp = Timestamp() + exp; } const item = {val: value, exp, iat: Timestamp()}; this.cache.setItem(key, JSON.stringify(item)); } /** * 获取缓存信息 * @param key string * @return any {} | string | [] */ public Get(key: string): any { // 获取当前时间戳 const time: number = Timestamp(); // 根据key获取val const cacheJson: string = this.cache.getItem(key); if (cacheJson == null) { // key是否存在 return ''; } // 转换 json const cacheObj: any = JSON.parse(cacheJson); if (time > cacheObj.exp && cacheObj.exp > 0) { // 有效期是否已过期 return ''; } return cacheObj.val; } /** * 获取缓存信息 * @param key string * @return string */ public GetString(key: string): any { // 根据key获取val const cacheJson: string = this.cache.getItem(key); if (cacheJson == null) { // key是否存在 return ''; } return cacheJson; } /** * 删除指定key * @param key string 需要删除的键 */ public Remove(key: string): void { this.cache.removeItem(key); } /** * 清除所有缓存 */ public Clear(): void { this.cache.clear(); } } export const Cache = new Caches<Storage>(localStorage); export const Session = new Caches<Storage>(sessionStorage); ```