比如2019年11月12日,想转为二零一九年十一月十二日
function CNDateString(date) {
var cn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九", '十'];
var dateArr = date.split(/年|月|日/g);
function setEqual(str, isTenUnit) {
let newStr = '';
if (isTenUnit) {
//是否大于10的倍数
let ci = Number(str) % 10;
let cv = ci > 1 ? cn[ci] + cn[10] + cn[ci] : cn[10] + cn[ci];
//是否大于10
newStr = str.length > 1 ? str.replace(str, cv) : str.replace(str, cn[str]);
} else {
for (let i = 0; i < str.length; i++) {
newStr += str[i].replace(str[i], cn[str[i]])
}
}
return newStr;
}
return setEqual(dateArr[0], false) + '年' + setEqual(dateArr[1], true) + '月' + setEqual(dateArr[2], true) + '日';
}
更新时间:2019年04月04日
function toZh_cn(str) {
const z = '零一二三四五六七八九十'
let [y, m, d] = str.split(/[年月日]/gi)
return y.replace(/\d/g, i => z[i]) + '年' + to(m) + '月' + to(d) + '日'
function to(s) {
if (s >= 10) {
let _s = s
s = s.split('').join('十')
if (_s < 20) {
s = s.substr(1)
}
}
return s.replace(/\d/g, (i, j) => ((j == 0 && i == 0) || (s.length - 1 === j && i == 0) ? '' : z[i]))
}
}
console.log(toZh_cn('2019年01月01日'))
// 格式为xxxx年xx月xx日
const xxx = '2019年05月28日';
const yearsArr = new Array("零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"); //年的数字
const monthArr = new Array("十", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"); //月的数字
let year = yearsArr[+xxx.slice(0,1)] + yearsArr[+xxx.slice(1,2)] + yearsArr[+xxx.slice(2,3)] + yearsArr[+xxx.slice(3,4)]
let month = +xxx.slice(5,7) <= 10 ? monthArr[+xxx.slice(6,7)] : monthArr[0] + monthArr[+xxx.slice(6,7)]
let day = +xxx.slice(8,10) <= 10 ? monthArr[+xxx.slice(9,10)] : +xxx.slice(8,10) < 20 ? monthArr[0] + monthArr[+xxx.slice(9,10)] : monthArr[2] + monthArr[0] + monthArr[+xxx.slice(9,10)]
let res = year + '年' + month+ '月' + day + '日'
console.log(res);
// [CNDateString 函数参见][1]
function CNDateString(date) {
var cn = ["零", "一", "二", "三", "四", "五", "六", "七", "八", "九"];
var arr = [];
var YY = date.getFullYear().toString();
for (var i = 0; i < YY.length; i++) {
if (cn[YY.charAt(i)]) {
arr.push(cn[YY.charAt(i)]);
}
}
arr.push("年");
var MM = date.getMonth() + 1;
if (MM < 10) {
arr.push(cn[MM]);
}
else if (MM < 20) {
arr.push("十" + cn[MM % 10]);
}
arr.push("月");
var DD = date.getDate();
if (DD < 10) {
arr.push(cn[DD]);
}
else if (DD < 20) {
arr.push("十" + cn[DD % 10]);
}
else {
arr.push("二十" + cn[DD % 10]);
}
arr.push("日");
return arr.join('');
}
var str = '2019年05月28日';
var reg = /\d+/g;
// 将 '2019年05月28日' 转换成 '2019,05,28'
// 利用 Date 构造函数生成时间对象
var timerStr = str.match(reg).join(',');
console.log(CNDateString(new Date(timerStr)));
缺点是将 “05” 转换成了 “五”
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
4 回答1.8k 阅读
如果是单纯的数字转换可以通过预定键值对来简单实现
不过这样转换出来的 是
一一月一二日
而不是你要的十一月十二日
,不知道有没有现成的库,或者也可以自己根据上面的代码逻辑改善下