import ot from 'dayjs'
import isestr from './isestr.mjs'
import getTimeFromUnit from './getTimeFromUnit.mjs'
function parseTime(t, unit) {
let e = ''
if (unit === 'years') {
e = '-01-01T00:00:00'
}
else if (unit === 'months') {
e = '-01T00:00:00'
}
else if (unit === 'days') {
e = 'T00:00:00'
}
else if (unit === 'hours') {
e = ':00:00'
}
else if (unit === 'minutes') {
e = ':00'
}
// else if (unit === 'seconds') {
// }
let fm = 'YYYY-MM-DDTHH:mm:ss'
return ot(t + e, fm)
}
/**
* 輸入時間字串,單位為unit,回傳解析後之時間物件
*
* Unit Test: {@link https://github.com/yuda-lyu/wsemi/blob/master/test/getTimeObject.test.mjs Github}
* @memberOf wsemi
* @param {String} t 輸入時間字串,不含時區
* @param {String} [unit='days'] 輸入時間單位字串,預設為'days'
* @returns {Object} 回傳時間物件,若非法時間則回傳null
* @example
*
* console.log(getTimeObject('2019-01-01', 'days'))
* // => dayjs('2019-01-01', 'YYYY-MM-DD') //use dayjs or moment
*
* console.log(getTimeObject('2019-01-01T12:34:56', 'seconds'))
* // => dayjs('2019-01-01T12:34:56', 'YYYY-MM-DDTHH:mm:ssZ') //use dayjs or moment
*
*/
function getTimeObject(t, unit = 'days') {
//check
if (!isestr(t)) {
return null
}
if (!isestr(unit)) {
return null
}
//o
let o = parseTime(t, unit)
//fmt
let fmt = getTimeFromUnit(unit)
//check unit
let m = o.format(fmt)
let b = (t === m)
if (b) {
return o
}
return null
}
export default getTimeObject