UNPKG

olympus-r

Version:

一个力求简单易用的前端开发框架 #### 开发语言 TypeScript #### 核心架构 MVC #### 模块间通讯和解耦 采用事件机制,利用一个全局唯一的事件派发器进行模块间通讯,解耦模块间依赖 #### 表现层结构 使用桥接模式拆分接口与实现,达到一套核心驱动多套表现层的目的(目前支持DOM、Egret、PixiJS三种表现层),同时支持表现层的未来可扩展性 #### TypeScript装饰器注入 框架提供TypeScript装饰器注入功能,便捷获取托管对象。例如:

113 lines (112 loc) 3.83 kB
import { numToStr } from './NumberUtil'; /** * @author Raykid * @email initial_r@qq.com * @create date 2018-02-07 * @modifier yuan.ping * @modify date 2018-06-21 * * 时间工具集 */ /** * 格式化本地时间戳 * 注:时间戳是从格林尼治时间1970年1月1日0时0分0秒开始的 * * @param {number} timestamp 时间戳,单位毫秒 * @param {string} [format="yyyy-MM-dd hh:mm:ss.S"] 格式,如"yyyy-MM-dd hh:mm:ss.S" * @returns {string} 格式化后的时间戳 */ export function formatTimestamp(timestamp, format) { if (format === void 0) { format = "yyyy-MM-dd hh:mm:ss.S"; } var date = new Date(timestamp); return formatFromData({ year: date.getFullYear(), quarter: Math.floor(date.getMonth() / 3) + 1, month: date.getMonth() + 1, date: date.getDate(), day: date.getDay(), hour: date.getHours(), minute: date.getMinutes(), second: date.getSeconds(), millisecond: date.getMilliseconds() }, format); } /** * 格式化格林尼治时间戳 * 注:时间戳是从格林尼治时间1970年1月1日0时0分0秒开始的 * * @param {number} timestamp 时间戳,单位毫秒 * @param {string} [format="yyyy-MM-dd hh:mm:ss.S"] 格式,如"yyyy-MM-dd hh:mm:ss.S" * @returns {string} 格式化后的格林尼治时间戳 */ export function formatUTCTimestamp(timestamp, format) { if (format === void 0) { format = "yyyy-MM-dd hh:mm:ss.S"; } var date = new Date(timestamp); return formatFromData({ year: date.getUTCFullYear(), quarter: Math.floor(date.getUTCMonth() / 3) + 1, month: date.getUTCMonth() + 1, date: date.getUTCDate(), day: date.getUTCDay(), hour: date.getUTCHours(), minute: date.getUTCMinutes(), second: date.getUTCSeconds(), millisecond: date.getUTCMilliseconds() }, format); } /** * 格式化时长,与时间戳不同,时长仅代表时间长度。因此仅支持显示d/h/m/s/S * 注:如果没有前一个时间维度,则当前维度不会取余,比如如果没有d,则h可能会超过24,以此类推 * * @export * @param {number} duration 时长,单位毫秒 * @param {string} [format="d hh:mm:ss"] 格式,如"d hh:mm:ss.S" * @returns {string} */ export function formatDuration(duration, format) { if (format === void 0) { format = "d hh:mm:ss.S"; } var data = { date: Math.floor(duration / 86400000), hour: Math.floor(duration / 3600000), minute: Math.floor(duration / 60000), second: Math.floor(duration / 1000), millisecond: duration }; if (format.indexOf("d") >= 0) data.hour %= 24; if (format.indexOf("h") >= 0) data.minute %= 60; if (format.indexOf("m") >= 0) data.second %= 60; if (format.indexOf("s") >= 0) data.millisecond %= 1000; return formatFromData(data, format); } function formatFromData(data, format) { // 统一替换的不包含毫秒数 var dict = { "y+": data.year, "q+": data.quarter, "M+": data.month, "d+": data.date, "D+": data.day, "h+": data.hour, "m+": data.minute, "s+": data.second }; for (var key in dict) { var value = dict[key]; // 负数不替换 if (value >= 0) { var reg = new RegExp("(" + key + ")", "g"); if (reg.test(format)) { format = format.replace(reg, numToStr(value, RegExp.$1.length)); } } } // 替换毫秒数 if (data.millisecond >= 0) { format = format.replace(/S+/g, data.millisecond + ""); } return format; }