// 获取任意时间
export const getDate = (date, AddDayCount = 0) => {
	if (!date) {
		date = new Date();
	}
	if (typeof date !== 'object') {
		date = date.replace(/-/g, '/');
	}
	const dd = new Date(date);

	dd.setDate(dd.getDate() + AddDayCount); // 获取AddDayCount天后的日期

	const y = dd.getFullYear();
	const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1; // 获取当前月份的日期，不足10补0
	const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate(); // 获取当前几号，不足10补0
	const dayStrList = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
	const HMS = `${dd.getHours() < 10 ? '0' + dd.getHours() : dd.getHours()}${dd.getMinutes() < 10 ? '0' + dd.getMinutes() : dd.getMinutes()}${
		dd.getSeconds() < 10 ? '0' + dd.getSeconds() : dd.getSeconds()
	}`;
	return {
		fullDate: y + '-' + m + '-' + d,
		year: y,
		month: m,
		date: d,
		day: dd.getDay(),
		dayStr: dayStrList[dd.getDay()],
		rStr: `${m}月${d}日`,
		HMS
	};
};

// 通用跳转方法
export function go(url, mode = 'navigateTo') {
	if (url == -1) {
		let pages = getCurrentPages(); //获取页面
		let beforePage = pages[pages.length - 2]; //上个页面
		if (beforePage) {
			uni.navigateBack();
		} else {
			uni.reLaunch({
				url: '/pages/index/index'
			});
		}
	} else {
		uni[mode]({
			url
		});
	}
}

export function sToHs(s) {
	//计算分钟
	//算法：将秒数除以60，然后下舍入，既得到分钟数
	let h;
	h = Math.floor(s / 60);
	//计算秒
	//算法：取得秒%60的余数，既得到秒数
	s = s % 60;
	//将变量转换为字符串
	h += '';
	s += '';
	//如果只有一位数，前面增加一个0
	h = h.length === 1 ? '0' + h : h;
	s = Math.floor(s * 100) / 100;
	s = s.length === 1 ? '0' + s : s;

	if (parseInt(s) < 10) s = '0' + s;
	return '00:' + h + ':' + s;
}

// 将时间格式'00:00:00.00' 转成毫秒
export function timeToMilliseconds(timeString) {
	// 拆分时间字符串
	const [hours, minutes, secondsWithMs] = timeString.split(':');
	const [seconds, milliseconds] = secondsWithMs.split('.');

	// 转换为秒数
	const totalMilliseconds =
		parseInt(hours) * 3600 * 1000 + // 小时转毫秒
		parseInt(minutes) * 60 * 1000 + // 分钟转毫秒
		parseFloat(`${seconds}.${milliseconds}`) * 1000; // 秒和毫秒转毫秒

	return totalMilliseconds;
}

// 将毫秒转长度
export function getTrackLength(str) {
	const milliseconds = timeToMilliseconds(str);
	return Math.round(milliseconds / 12.5);
}

export default {
	getDate,
	go,
	sToHs,
	timeToMilliseconds,
	getTrackLength
};
