vue uniapp js 将两个日期之间的天数转换为汉字表示的天数

为了提高性能,使用数组来存储中文表示的天数,然后在循环结束后再将数组连接成一个字符串。这样可以减少字符串连接的次数,从而提高性能。

// 计算天数
			calculateDays(startDate, endDate) {
				const start = new Date(startDate);
				const end = new Date(endDate);
				const diffTime = Math.abs(end - start);
				const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

				const chineseNumbers = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
				const chineseUnits = ['', '十', '百', '千'];
				const chineseBigUnits = ['', '万', '亿', '万亿']; // 可以继续扩展更大的单位

				const numStr = diffDays.toString();
				let chineseArr = [];

				for (let i = 0; i < numStr.length; i++) {
					const digit = parseInt(numStr[i]);
					const unit = chineseUnits[numStr.length - 1 - i];

					if (digit !== 0) {
						chineseArr.push(chineseNumbers[digit] + unit);
					} else {
						// 处理连续的零,避免出现多余的零
						if (chineseArr[chineseArr.length - 1] !== chineseNumbers[0]) {
							chineseArr.push(chineseNumbers[digit]);
						}
					}

					// 添加大单位
					if (i % 4 === 0 && i > 0) {
						chineseArr.push(chineseBigUnits[i / 4]);
					}
				}

				const chineseStr = chineseArr.join('');

				return chineseStr;

			},

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值