function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function(n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}
var dateUtils = {
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function(milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function(dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function(number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDay()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	},
	formateDate: function(newdate, format) {
		const date = {
			'M+': newdate.getMonth() + 1,
			'd+': newdate.getDate(),
			'h+': newdate.getHours(),
			'm+': newdate.getMinutes(),
			's+': newdate.getSeconds(),
			'q+': Math.floor((newdate.getMonth() + 3) / 3),
			'S+': newdate.getMilliseconds()
		};
		if (/(y+)/i.test(format)) {
			format = format.replace(RegExp.$1, (newdate.getFullYear() + '').substr(4 - RegExp.$1.length));
		}
		for (const k in date) {
			if (new RegExp('(' + k + ')').test(format)) {
				format = format.replace(RegExp.$1, RegExp.$1.length === 1 ?
					date[k] : ('00' + date[k]).substr(('' + date[k]).length));
			}
		}
		return format;
	},
	getFirstDayOfWeek: function(date) {
		var day = date.getDay() || 7;
		var result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1 - day);
		return result;
	},
	getLastDayOfWeek: function(date) {
		var day = date.getDay() || 7;
		var result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 7 - day);
		return result;
	},
	/**获取当年第一天 */
	getCurrentYearFirstDate: function(now) {
		const nowyear = now.getFullYear() + ''; // 获取年（yyyy）
		// 调用格式化方法
		const firstDate = new Date(nowyear + '/01' + '/01');
		return firstDate;
	},
	/**获取当年最后一天 */
	getCurrentYearLastDate: function(now) {
		const year = now.getFullYear() + 1; // 获取年（yyyy）
		// 调用格式化方法
		const nextyear = new Date(year + '/01' + '/01');
		nextyear.setDate(nextyear.getDate() - 1);
		return nextyear;
	},
	/**获取当月月第一天 */
	getCurrentMonFirstDate: function(now) {
		const nowyear = now.getFullYear() + ''; // 获取年（yyyy）
		let nowmonth = now.getMonth() + 1 + ''; // 获取月份（0-11，0代表1月）
		// 调用格式化方法
		nowmonth = this.dateformat(nowmonth);
		const firstDate = new Date(nowyear + '/' + nowmonth + '/01');
		return firstDate;
	},
	/**获取当月月最后一天 */
	getCurrentMonLastDate: function(now) {
		const nextMonFirstDate = this.getNextMonFirstDate(now);
		nextMonFirstDate.setDate(nextMonFirstDate.getDate() - 1);
		return nextMonFirstDate;
	},
	/**获取下个月第一天 */
	getNextMonFirstDate: function(now) {
		const currentMonFirstDate = this.getCurrentMonFirstDate(now);
		currentMonFirstDate.setMonth(currentMonFirstDate.getMonth() + 1);
		return currentMonFirstDate;
	},
	dateformat: function(fmt) {
		if (fmt.length === 1) {
			fmt = '0' + fmt;
		}
		return fmt;
	}
};

module.exports = {
	formatTime: formatTime,
	formatLocation: formatLocation,
	dateUtils: dateUtils
}
