diff --git a/src/utils/index.js b/src/utils/index.js index 3225d3c..066bcfa 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -51,6 +51,55 @@ export function parseTime(time, cFormat) { return time_str } +/** + * Parse the time to string + * @param {(Object|string|number)} time + * @param {string} cFormat + * @returns {string | null} + */ +export function parseUTCTime(time, cFormat) { + if (arguments.length === 0 || !time) { + return null + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string')) { + if ((/^[0-9]+$/.test(time))) { + // support "1548221490638" + time = parseInt(time) + } else { + // support safari + // https://stackoverflow.com/questions/4310953/invalid-date-in-safari + time = time.replace(new RegExp(/-/gm), '/') + } + } + + if ((typeof time === 'number')) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getUTCFullYear(), + m: date.getUTCMonth() + 1, + d: date.getUTCDate(), + h: date.getUTCHours(), + i: date.getUTCMinutes(), + s: date.getUTCSeconds(), + a: date.getUTCDay() + } + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + const value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } + return value.toString().padStart(2, '0') + }) + return time_str +} + /** * @param {number} time * @param {string} option diff --git a/src/views/announcement/index.vue b/src/views/announcement/index.vue index e4b7fa5..e248ba0 100644 --- a/src/views/announcement/index.vue +++ b/src/views/announcement/index.vue @@ -1,10 +1,10 @@