UNPKG

wsemi

Version:

A support package for web developer.

88 lines (70 loc) 2.49 kB
import ot from 'dayjs' import istime from './istime.mjs' import time2min from './time2min.mjs' /** * 起訖時間合併顯示,時間單位皆為秒 * * Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/getTimeRange.test.mjs Github} * @memberOf wsemi * @param {String} tstart 輸入開始秒時間字串,不含時區 * @param {String} tend 輸入結束秒時間字串,不含時區,若不輸入則等同於開始時間字串 * @returns {String} 回傳合併顯示時間字串 * @example * * console.log(getTimeRange('2019-01-01T09:00:00')) * // => '2019-01-01T09:00 至 無' * * console.log(getTimeRange('2019-01-01T09:00:00', '2019-01-01T12:34:56')) * // => '2019-01-01T09:00 至 12:34' * * console.log(getTimeRange('2019-01-01T09:00:00', '2019-01-03T12:00:00')) * // => '2019-01-01T09:00 至 2019-01-03T12:00' * * console.log(getTimeRange('2019-01-01T19:00:00', '2019-01-01T12:00:00')) * // => '2019-01-01T19:00 至 12:00 (起始時間大於結束時間)' * * console.log(getTimeRange('2019-01-03T09:00:00', '2019-01-01T12:00:00')) * // => '2019-01-03T09:00 至 2019-01-01T12:00 (起始時間大於結束時間)' * */ function getTimeRange(tstart, tend) { //可再支援輸入TZ時間 //check if (!istime(tstart)) { return '無起始時間' } //set tend if (tend === undefined) { tend = tstart //若無tend則設定為起始時間 } //check if (!istime(tend)) { return '結束時間格式錯誤' } //m1, m2 let m1 = ot(tstart, 'YYYY-MM-DDTHH:mm:ss') let m2 = ot(tend, 'YYYY-MM-DDTHH:mm:ss') //day let ctstart = m1.format('YYYY-MM-DD') let ctend = m2.format('YYYY-MM-DD') if (ctstart === ctend) { //同天 let h = m2.format('HH:mm') if (tstart === tend) { return time2min(tstart) + ' 至 ' + '無' } else if (tstart < tend) { return time2min(tstart) + ' 至 ' + h } else if (tstart > tend) { return time2min(tstart) + ' 至 ' + h + ' (起始時間大於結束時間)' } } else if (ctstart < ctend) { return time2min(tstart) + ' 至 ' + time2min(tend) } else if (ctstart > ctend) { return time2min(tstart) + ' 至 ' + time2min(tend) + ' (起始時間大於結束時間)' } return '' } export default getTimeRange