import { isNil } from '../../primitive/nil'
import isNumber from '../../primitive/number/check/isNumberPrimitive'
import isString from '../../primitive/string/isStringPrimitive'
import { isArray } from '../../array'
import isDate from './isDate'
/**
* convert values to dates
* @since 5.0.0-beta.7
*
* @param {Date | number | string | Array<*> | *} date value to cast to a Date
* @return {Date} it's a date!
*
* @example
* toDate()
* //=> new Date()
*
* toDate('october-31-1960')
* //=> Date.parse('october-31-1960')
*
* toDate(1000000)
* //=> new Date(1000000)
*
* // year, month [, date, hours, minutes, seconds, milliseconds]
* toDate([2014, 1, 1])
* //=> new Date(2014, 1, 1)
*/
function toDate(date) {
// this is fallback too
// if (isNil(date)) return newDate()
// if (isDate(date)) return date
// if (isNumber(date)) return newDate(date)
// if (isString(date)) return Date.parse(date)
// if (isArray(date)) return newDate.apply(this, date)
// else return newDate()
if (isDate(date)) {
return date
} else if (isNumber(date)) {
return new Date(date)
} else if (isString(date)) {
return Date.parse(date)
} else if (isArray(date)) {
return new Date(...date)
} else {
return new Date()
}
}
export { toDate }
export default toDate