# getTimeRange.mjs

    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