【前端从0开始】JavaSript——Date对象

创建Date对象

var dateObj=new Date();
方法

  1. 将日期转为字符串
  toLocaleString()  
  toLocaleDateString() 
  toLocaleTimeString()
  1. 获取年、月、日、小时、分、秒
    ○1)getYear() //两位的年(2000年前)或三位的年[1900]
    获取两位数的年,从1900年开始计算,现在这个方法基本上已经没弃用
console.log(d.getYear());

○2)getFullYear() //四位的年
获取完整的四位数的年,使用的比较多

console.log(d.getFullYear());

○ 3)getMonth() //月份+1
获取月份,返回值为0-11,表示1月到12月,所以获取到月份之后需要+1

console.log(d.getMonth()+1); // 当前月+1

○4)getDate() //日
获取天,返回值为今天是几号

console.log(d.getMonth()+1); // 当前月+1

○ 5)getHours() //小时

console.log(d.getHours()); // 当前月+1

○6)getMinutes() //分钟

console.log(d.getMinutes()); // 当前分钟

○7)getSeconds() //秒

console.log(d.getMinutes()); // 当前秒钟

○ 8)getTime() //1970 年 1 月 1 日至今的毫秒数
时间戳专门用来计算时间的差值,或者倒计时等功能

var d = new Date();
// 1. 通过getTime获取
console.log(d.getTime()); // 当前秒钟
// 2. 通过valueOf获取
console.log(d.valueOf());
// 3. H5新增的获取毫秒树的方式
console.log(Date.now());
// 4. 添加+号[把日期对象转为数字类型]
console.log(+new Date());
  1. 定时器
    setInterval(函数体,时间(毫秒),参数(传递给函数的参数))
// 时间跳动案例
function getT(){
        // 获取时间
        var d = new Date();
        var year = d.getFullYear(); 
        var month = d.getMonth()+1;
        var day = d.getDate();
        var h = d.getHours();
        var m = d.getMinutes();
        var s = d.getSeconds();
        var ms = d.getMilliseconds();
        var oTime = document.getElementById('times');
        oTime.innerHTML = year+'-'+month+'-'+day+' '+h+':'+m+':'+s+' '+ms;
}
function stop(){
        // 清除某个定时器  clearInterval(定时器的名称);
        clearInterval(myTime);
}
  1. 怎么计算时间差
    使用时间戳【UNIX时间戳,timestamp】计算时间差
    2021-9-5 10:30:20 -> 1630809020000
    2020-8-9 12:30:45 -> 1596947445000
    差多少年,天,小时,分钟,秒钟
    时间戳 参照时间: 1970/1/1 0:0:0(格林威治时间)
    1970/1/1 8:0:0(北京时间)
    时间戳:d.getTime(); 单位是毫秒数

计算公式
d = parseInt(总秒数/60/60/24) // 天数
h = parseInt(总秒数/60/60%24) // 小时
m = parseInt(总秒数/60%60) // 分钟
s = parseInt(总秒数%60) // 秒

    var aTime = new Date('2021-9-5 10:30:20'); // 指定的某个时间
    var bTime = new Date('2021-8-5 8:20:10');  // 
    var cha = aTime.getTime() - bTime.getTime();
    if(cha<=0){
        console.log('时间输入有误!');
    }else{
        var miao = cha / 1000; // 秒的单位
        var s = miao % 60; // 秒

        var fen = parseInt(miao / 60); // 分钟的单位
        var m = fen%60;// 分钟

        var hour = parseInt(fen / 60); // 小时的单位
        var h = hour % 24; // 小时

        var day = parseInt(hour / 24); // 天
        var d = day % 365;

        var y = parseInt(day/365); // 年

        console.log('两个时间相差:'+y+'年,'+d+'天,'+h+'小时,'+m+'分钟,'+s+'秒钟'); 
    }

案例:苏宁易购显示抢购活动
在这里插入图片描述
5. 设置时间
a.直接设置年月日,时分秒
new Date() 获取当前时间
new Date(字符串 / 时间戳 / 值); 获取指定时间
字符串:“2021-2-3 12:23:34”
时间戳:1617589820000
值: 2012,5,6,12,30,00

var d = new Date('2009-11-12 08:20:30'); // 正常字符串时间的表示方式
var d = new Date('Jan 1 2001 05:20:10'); // 日期时间对象返回的格式
var d = new Date(2020,10,10,10,20,30); // js的时间格式
var d = new Date(1607061589000); // 时间戳

b.简单设置时间
set… [用的不多]
setMonth();
setDate();
setFullYear();
案例1:某人从2008-8-8号过起了三天打鱼两天筛网的日期,问:今天该打鱼还是筛网,明天呢?明年的今天呢?

// 2008-8-8 张三 打鱼晒网的日期 - 三天打鱼两天筛网
// 今天该打鱼还是筛网 - 获取今天日期
// 经历了多少天:new Date - 2008-8-8
var now = new Date(); // 当前
var start = new Date('2008-8-8');
var cha = now - start; // 单位 ms
var s = parseInt(cha/1000);
var m = parseInt(s/60);
var h = parseInt(m/60);
var d = parseInt(h/24);
var yu = d % 5;
if(yu<3){
  console.log('晒网');
}else{
  console.log('打鱼');
}

案例2:输入年份生成日历

<style>
  body {
    text-align: center;
  }
  
  .box {
    margin: 0 auto;
    width: 880px;
  }
  
  .title {
    background: #ccc;
  }
  
  table {
    height: 200px;
    width: 200px;
    font-size: 12px;
    text-align: center;
    float: left;
    margin: 10px;
    font-family: arial;
  }
</style>
<script>
  var year = parseInt(prompt('输入年份:', '2022')); // 制作弹窗输入年份,默认为2022年
  document.write(calendar(year));//调用函数生成指定年份的年历
  
  function calendar(year){
    var html = "<div class='box'>";
    for(var m=0;m<=11;m++){
      // 获取每月的第一天的星期
      var w = new Date(year,m).getDay();
      html += `<table><tr class="title"><td colspan='7'>${year}${m}月</td></tr>`;
      html += `<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>`;
      // 获取每月的天数
      var max = new Date(year,m,0).getDate(); 
      html += '<tr>'
      for(var d=1; d <= max; d++){
        //如果该月的第1天不是星期日,则填充空白
        if (w && d == 1) {
          html += '<td colspan ="' + w + '"> </td>';
        }
        html += '<td>' + d + '</td>';
        if (new Date(year,m,d).getDay()==6) {//如果星期六不是该月的最后一天,则换行
          html += '</tr><tr>';
        } else if (d == max) {//该月的最后一天,闭合</tr>标签
          html += '</tr>';
        }
      }
      html += '</tr>'
    }
    
    html += '</table></div>';
    return html;
  }
   </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程皮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值