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>");