汉子时钟

    科技2022-07-16  111

    汉子时钟

    <div id="d"></div> <script> // 思路 // 定义一个函数,获取当前时间的数据信息 // 需要将数值,转化为对应的汉字 // 需要有两个函数,一个是专门转化年份的函数,另一个是转化其他时间的函数 // 年份中,必须要添加 汉字 十 d.innerHTML = setTime(); setInterval( function(){ d.innerHTML = setTime(); } , 1000) function setTime(){ // 创建当前时间对象 var d = new Date(); // 获取时间信息,年,月,日,星期,时,分,秒 var y = d.getFullYear(); var month = d.getMonth()+1; var day = d.getDate(); var w = d.getDay(); var h = d.getHours(); var m = d.getMinutes(); var s = d.getSeconds(); // 将星期的数值,转化为中文 var arr = ['日','一','二','三','四','五','六']; // 将星期获取的数值,作为索引下标,获取对应的汉字 // 将年份转化为中文汉字,将获取到的年份作为函数的参数 y = getYearStr(y); // 其他时间,转化为中文汉字,将其他时间作为函数的参数 month = getTimeStr(month); day = getTimeStr(day); h = getTimeStr(h); // 分钟,秒,多拼接一个零汉字 if(m < 10){ m = '零' + getTimeStr(m) }else{ m = getTimeStr(m); } if(s < 10){ s = '零' + getTimeStr(s); }else{ s = getTimeStr(s); } return `当前时间是:${y}年,${month}月,${day}号,星期${arr[w]},${h}点,${m}分,${s}秒`; } // 需要参数,是要转化的年份 function getYearStr(year){ // 首先,年份是一个4位数值,需要获取每一位上的阿拉伯数字 // 在将这些阿拉伯数字,转化为对应的汉字 // 如果年份是负数,表示公元前 // 如果是负数,不能作为索引下标,要转化为整数 var str = ''; if(year < 0 ){ // 如果是负数年份,对这个年份取绝对值 year = Math.abs(year); str = '公元前'; } /* 方法1,通过获取4位数值,获取字符串 // 第一位是除以1000,获取整数部分 var a = parseInt( year / 1000 ); // 第二位获取方式: // 方法1: (年份 - 第一位数值*1000) / 100 取整 // 方法2: (年份 % 1000) / 100 取整 var b = parseInt( (year % 1000 ) / 100 ); // 第三位获取方式: // 方法1: (年份 - 第一位数值*1000 - 第二位数值*100) / 10 取整 // 方法2: (年份 % 100) / 10 取整 var c = parseInt( (year % 100) / 10 ); // 第四位获取方式 // 方法1: 年份 - 第一位数值*1000 - 第二位数值*100 - 第三位*10 // 方法2: 年份 % 10 var d = year % 10; // 需要将数值,转化为对应的汉字内容 // 将数值看成索引下标,建立对应的数组,来获取中文 var arr = ['零','一','二','三','四','五','六','七','八','九']; // 返回数值对应的字符串汉字 // 如果是正常年份,拼接的是空字符串 // 如果是公元前,会拼接公元前3个字 return `${str}${arr[a]}${arr[b]}${arr[c]}${arr[d]}`; */ // 方法2,通过循环 var arr = ['零','一','二','三','四','五','六','七','八','九']; // 1,将年份数值,转化为年份字符串 year = year.toString(); // 2,循环遍历字符串,获取每一位上的字符,从数组中,获取对应的汉字,进行拼接 // 定义空字符串,存储年份字符串 var s = ''; // 字符串只能使用for...in循环 for(var key in year){ // year[key] 是对应的年份的数值 // arr[ year[key] ] 是将年份数值,作为索引下标,获取对应的汉字 // 将获取的结果,拼接入变量中 s += arr[year[key]]; } // 定义返回值字符串 return `${str}${s}`; } // 其他事件,数值范围是0-59之间 // 将数值分成4类 // 1, 0 - 10的数值 转化为 一位汉字 // 2, 20,30,40,50 可以被10整除的数值, 十位数值对应汉字 拼接 '十' // 3, 11-19之间 11-19范围的数值 , '十' 拼接 个位数字对应的汉字 // 4, 21-29,31-39,41-49,51-59 十位对应汉字 拼接 '十' 拼接 个位对应汉字 /* 时间还凑合,要是银行存款,你能写到退休 var arr = ['零','一','二','三','四','五','六','七','八','九','十','十一','十二','十三','十四','十五','十六','十七','十八','十九','二十','二十一','二十二','二十三','二十四','二十五','二十六','二十七','二十八','二十九','三十','三十一','三十二','三十三','三十四','三十五','三十六','三十七','三十八','三十九','四十','四十一','四十二','四十三','四十四','四十五','四十六','四十七','四十八','四十九','五十','五十一','五十二','五十三','五十四','五十五','五十六','五十七','五十八','五十九'] */ function getTimeStr(time){ // 定义汉字数组 var arr = ['零','一','二','三','四','五','六','七','八','九','十']; // 根据4种分类,返回同的字符串 // 时间数值 小于等于 10 转化1位汉字 if(time <= 10){ return arr[time]; // 时间数值 20,30,40,50 可以被10整除 转化 十位数值汉字 拼接 '十' }else if(time % 10 == 0){ // 获取十位数值 var a = parseInt( time / 10); // 返回值,十位数值对应汉字拼接'十' return `${arr[a]}十`; // 时间数值 11 - 19 转化 '十' 拼接 个位数值汉字 }else if(time >= 11 && time <= 19){ // 获取个位数值 var b = parseInt( time % 10); // 返回值,'十'拼接个位数值对应汉字 return `十${arr[b]}`; // 时间数值 21-29,31-39,41-49,51-59 // 十位数值汉字 拼接 '十' 拼接 个位数值汉字 }else{ // 获取十位 var a = parseInt( time / 10); // 获取个位 var b = parseInt( time % 10); return `${arr[a]}十${arr[b]}`; } } </script>
    Processed: 0.010, SQL: 8