各種演算のカプセル化方法(タイムスタンプ~時刻)(金額:元~分)(演算:加減乗除)(時刻・日付を個別に抽出)etc...

//时间戳转时间--type为"date":返回年月日;"time":返回时分秒;"":返回年月日时分秒;
const timestampToTime = (timestamp, type) => {
	// console.log("timestamp", timestamp)
	if (timestamp.length == 10) {
		timestamp = timestamp * 1000
	}
	var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
	var Y = date.getFullYear() + '-';
	var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
	var D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
	if (type == "date") {
		return Y + M + D;
	}
	var h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
	var m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
	var s = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());
	if (type == "time") {
		return h + m + s;
	}
	return Y + M + D + ' ' + h + m + s;
}

//数字转换为字符串
const formatNumber = n => {
	n = n.toString()
	return n[1] ? n : `0${n}`
}
//分转化为元  fenToYuan(256) = 2.56

const fenToYuan = (amount) => {
	if (!amount) {
		return 0;
	} else {
		let num = (Number(amount) / 100).toFixed(2);
		let handleNum = parseFloat(num)
		let isToFixed = handleNum.toString().includes('.') && handleNum.toString().split('.')[1].length > 2
		if (isToFixed) {
			return handleNum.toFixed(2);
		} else {
			return handleNum
		}
	}
}

//元转分 yuanToFen(2.56) = 256
const yuanToFen = (amount) => {
	return Math.round(Number(amount) * 100).toString()
}

// 小时数转分钟 changeStrToMinutes(5) = 300
const changeStrToMinutes = (time) => {
	if (!time) {
		return 0;
	} else {
		return Number(time) * 60;
	}
}

// 分钟转小时 changeStrToHour(30) = 0.5
const changeStrToHour = (time) => {
	if (!time) {
		return 0;
	} else {
		let num = (Number(time) / 60).toFixed(2);
		let handleNum = parseFloat(num)
		let isToFixed = handleNum.toString().includes('.') && handleNum.toString().split('.')[1].length > 2
		if (isToFixed) {
			return handleNum.toFixed(2);
		} else {
			return handleNum
		}
	}
}

// 分钟数转换为 小时:分钟  
const changeHourMinutestr = (str) => {
	if (str !== "0" && str !== "" && str !== null) {
		return ((Math.floor(str / 60)).toString().length < 2 ? "0" + (Math.floor(str / 60)).toString() :
			(Math.floor(str / 60)).toString()) + ":" + ((str % 60).toString().length < 2 ? "0" + (str % 60)
			.toString() : (str % 60).toString());
	} else if (str == 0) {
		return "00:00"
	} else {
		return "";
	}
}

// 小时分钟格式转换为分钟数
const changeStrToMinutestr = (str) => {
	var arrminutes = str.split(":");
	if (arrminutes.length == 2) {
		var minutes = parseInt(arrminutes[0]) * 60 + parseInt(arrminutes[1]);
		return minutes;
	} else {
		return 0;
	}
}

//日期字符串转成时间戳
//例如var date = '2015-03-05 17:59:00:00';
const dateStrChangeTimeTamp = (dateStr) => {
	dateStr = dateStr.substring(0, 19);
	dateStr = dateStr.replace(/-/g, '/');
	var timeTamp = new Date(dateStr).getTime();
	return timeTamp
}

//日期增加
const addDate = (date) => {
	var curDate = new Date(date);
	console.log(curDate);
	var dateTime = new Date((curDate / 1000 + 86400) * 1000); //86400一天   
	console.log(dateTime);
	var mon = (dateTime.getMonth() + 1);
	console.log(mon);
	var day = (dateTime.getDate());
	// if(mon<10){
	// 	mon="0"+mon;
	// }if(day<2){
	// 	day ="0"+day;
	// }
	//return dateTime.getFullYear() + '-' + mon + '-' + day;
	return dateTime.getFullYear() + '-' + (mon < 10 ? "0" + mon : mon) + '-' + (day < 10 ? "0" + day : day);
}

//时间字符串过滤秒
const timeStringFilter = (timeStr, type) => {
	if (!timeStr) {
		return ''
	}
	if (type == 'date') {
		return timeStr.substring(0, 10)
	} else if (type == 'time') {
		return timeStr.substring(11, timeStr.length - 3)
	} else if (type == 'year-month') {
		return timeStr.substring(0, 7)
	} else if (type == 'month-date') {
		return timeStr.substring(5, 10)
	} else {
		return timeStr.slice(0, timeStr.length - 3)
	}
}

// 运算
const amend = (num1, num2, symbol) => {
	if (!num1) num1 = 0;
	if (!num2) num2 = 0;
	var str1 = num1.toString(),
		str2 = num2.toString(),
		result, str1Length, str2Length
	//解决整数没有小数点方法
	try {
		str1Length = str1.split('.')[1].length
	} catch (error) {
		str1Length = 0
	}
	try {
		str2Length = str2.split('.')[1].length
	} catch (error) {
		str2Length = 0
	}
	var step = Math.pow(10, Math.max(str1Length, str2Length))
	switch (symbol) {
		case "+":
			result = (num1 * step + num2 * step) / step
			break;
		case "-":
			result = (num1 * step - num2 * step) / step
			break;
		case "*":
			result = ((num1 * step) * (num2 * step)) / step / step
			break;
		case "/":
			result = (num1 * step) / (num2 * step)
			break;
		default:
			break;
	}
	return result
}
module.exports = {
	timestampToTime,
	formatNumber,
	fenToYuan,
	yuanToFen,
	changeStrToMinutes,
	changeStrToHour,
	changeHourMinutestr,
	changeStrToMinutestr,
	dateStrChangeTimeTamp,
	addDate,
	timeStringFilter,
	amend,
}

おすすめ

転載: blog.csdn.net/weixin_44805839/article/details/132150215