11、日期
时间对象
在计算机的世界中,时间是从1970.1.1 00:00 开始的,都是通过毫秒数来计算
var time = new Date().getTime(); //1597407020009 这里是距离1970年有多少毫秒 document.write(time);
获取当前时间
//定义时间对象 var date = new Date(); //将时间对象转换成字符串 Fri Aug 14 2020 20:10:20 GMT+0800 (中国标准时间) document.write(date.toString());
获取时间各个部分
//获取年 var year = date.getFullYear(); //获取月份: 注意+1 var month = date.getMonth() + 1; //获取日期 var day = date.getDate(); //获取小时 var hour = date.getHours(); //获取分钟数 var minute = date.getMinutes(); //获取秒数 var second = date.getSeconds(); //获取毫秒数 var ms = date.getMilliseconds();
//2020-8-14 20:22:0:815 var str = year + "-" + month + "-" + day + "-" + “ " + hour + ":" + minute + ":" + second + ":" + ms; document.write(str);
练习1:将如下年份转换成如下格式:
例如:2020.2.20 转成 "公元二零二零年二月二十日”
var date = new Date(); var res = "公元"; var arr = ["零", "一", "二","三","四","五","六","七","八","九","十"]; //年 var year = date.getFullYear(); //将年的数字转换成字符串 var sy = year.toString(); //对年内的每个数字遍历 for(var i=0; i<sy.length; i++) { //拿到当前数字的值 作为arr数组的下标 这样就对应了每个繁体数字 var index = sy[i]; //对每个数字进行拼接 res += arr[index]; } res += "年"; //月 var month = date.getMonth() + 1; if(month<=10) { //在10以下 翻译成汉字数字 res += arr[month]; }else { //取到大于10的月份的个位 var g = month%10; res += "十" + arr[g]; } res += "月"; //日 var day = date.getDate(); if(day<=10) { //在10以下的数字 res += arr[day]; }else if(day<20){ //对10-20的日期求余可得到个位数 var d = day%10; res += "十" + arr[d]; //十可以单独加 }else if(day==20) { res += "二十"; }else if(day<30) { var d = day%10; //20-30的日期可求余得到个位数 res += "二十" + ar[d]; }else if(day==30) { res += "三十"; }else if(day==31) { res += "三十一"; }
res += "日";
//2020/8/14 公元二零二零年八月十四日
document.write(res);
练习2:输出当前月的日历
var date = new Date(); //输出当前日期 2020年8月15日 document.write("今天是:" + date.getFullYear() + "年" + (date.getMoth() + 1) + "月" + date.getDate() + "日"); document.write("<br>"); document.write("<br>"); document.write("<table>"); //创建新的一行 document.write("<tr>"); var arr = ["天", "一", "二", "三", "四", "五", "六"]; //输出日历的列表头部 for(var i=0; i<7; i++) { document.write("<td>星期" + arr[i] + "</td>"); } document.write("</tr>"); //1号是星期几 var fday = new Date(); //获取当前时间年 并将时间设置到对象中 fday.setFullYear(date.getFullYear()); fday.setMonth(date.getMonth()); fday.setDate(1); //求1号前面有多少空格 这里得到当前是星期几 同时也能推断出一号前面有多少个空格 方便进行<td>填充 var week = fday.getDay(); //6 alert(week); //当前月份有多少天? var nmy = new Date(); //将年份设置为当前年 nmy.setFullYear(date.getFullYear()); //月份设置为当前月的下一个月 nmy.setMonth(date.getMonth() + 1); //具体日期是从1开始的 但是这里设置为0 则是代表上个月的最后一天 nmy.setDate(0); //可以看到刚设置日期以后所得到的最后一天日期天数 //推算出总共有多少格子 var len = week + lastDay; //遍历每个格子 for(var i=1; i<len; i++) { if(i%7 == 1) { document.write("<tr>"); } var d = i - week; //这里对1号以前的空格进行空内容的填充 if(d<0) { document.write("<td></td>"); }else { //在当前时间时,单独设置样式 字体为红色 if(d == date.getDate()) { document.write("<td style='color: red;'>" + d + "</td>"); }else { //为每个具有日历数字的框中添加日期 document.write("<td>" + d + "</td>"); } } //每个行尾结束标签 if(i%7 == 0) { document.write("</tr>"); } document.write("</table>");