项目场景:
需要将日期例如:2022-12-07
转换为大写中文二零二二年十二月〇七日
问题描述
需要将日期例如:2022-12-07
转换为大写中文二零二二年十二月〇七日
。可能需要注意月份大于9月的表示,和10/20/30日这样的情况显示。
解决方案:
代码还需要优化,但是已经可以实现了。
function converToDate(date) {
var chinese=new Array('〇', '一', '二', '三', '四', '五', '六', '七', '八', '九','十');
if (date == null) {
date="0000-00-00"
}
var chineseStrYear="〇〇〇〇";;
var chineseStrMon="〇〇";;
var chineseStrDay="〇〇";;
var show=date.toString();
var rr=show.split('-');
rr=rr.join('');
var yy =rr.substring(0,4);
var mm =rr.substring(4,6);
var dd =rr.substring(6,8);
var intYy = (parseInt(yy));
var intMm = (parseInt(mm));
var intDd = (parseInt(dd));
if(intYy >0)
{
chineseStrYear="";
chineseStrYear+=chinese[Math.floor(intYy/1000)];
chineseStrYear+=chinese[Math.floor(intYy/100%10)];
chineseStrYear+=chinese[Math.floor(intYy/10%10)];
chineseStrYear+=chinese[Math.floor(intYy%10)];
}
chineseStrYear+="年";
chineseStrMon=chinese[0]+chinese[intMm];
if(intMm >9)
{
chineseStrMon="";
chineseStrMon+=chinese[10];
chineseStrMon+=chinese[intMm%10];
if(intMm === 10) chineseStrMon=chinese[10];
}
chineseStrYear+=chineseStrMon+"月";
chineseStrDay=chinese[0]+chinese[intDd];
if(intDd >9)
{
chineseStrDay="";
chineseStrDay+=chinese[Math.floor(intDd/10)];
chineseStrDay+=chinese[10];
if(intDd%10 != 0)chineseStrDay+=chinese[intDd%10];
if(intDd === 10) chineseStrDay=chinese[10];
}
chineseStrYear+=chineseStrDay+"日";
return chineseStrYear;
};