JavaScript--时间date()

date()的返回值的数据类型时对象(object)

1.获取时间点

        将时间点的所有信息封装到对象中,可以通过某一方法获取时间点(年、月、日、时、分、秒、毫秒等)的信息

获取常用的时间点:

<script str="">
        //时间点的所有信息都被封装到对象中,可以通过一方法获取时间点的信息,如下
        const date = new Date();
        console.log(date)//获取全部:星期几、几月、几号、年份、时间(包括几点几分几秒)
        console.log(date.getFullYear());   // 获取四位数的年份(2023)
        console.log(date.getMonth());      // 获取月份,从0开始(7代表8月)
        console.log(date.getDate());       // 获取日期(16)
        console.log(date.getDay());        // 获取星期几,从0开始(星期天)(3代表星期三):1234560
        console.log(date.getHours());      // 获取小时(当前时间的小时)范围0-23
        console.log(date.getMinutes());    // 获取分钟(当前时间的分钟)范围0-59
        console.log(date.getSeconds());    // 获取秒数(当前时间的秒数) 范围0-59
        console.log(date.getMilliseconds)   //获取毫秒
        console.log(date.getTime)           //获取毫秒:getTime()方法是Date对象的一个方法,它返回一个日期对象的时间戳(timestamp),表示从1970年1月1日午夜(格林尼治标准时间)到指定日期的毫秒数。
    </script>

 2.时间转化字符串

        (1)传入一个参数:填写时间格式字符串(可以只记年月时分秒)

                        可以填数字:从时间戳开始往前前进了多少毫秒

         

         (2)传入多个参数

                 从左往右一次是日、年、时、分、秒

                若没添加,则默认为0

        里面的数字可以任意填,因为相同会自动转换:如填了32,则会满12进一:返回结果为4,年份的话会增加相应的年数:2005+(32/12取整)        月份:32%12

                ​​​​​​​

 

 3.时间运算:可以计算两个时间差值

        ​​​​​​​        

                a是获取当前时间        a1是自己定义一个时间

        

         (1)静态方法:可以快速得到当前时间的对象,图中代码130和131意思一样的

        ​​​​​​​        

                 

         (2)修改一个时间点对象的信息

                setMonth(),setMinutes():两者分别表示可以将月修改为自己想要的月份和分

        ​​​​​​​        

                习题1:判断发表文章的时间:若发表时间不超过1分钟,则返回“刚刚“

                                                时间在1分钟到1小时之间显示“n分钟前”

                                                大于1小时则返回“n年-n月-n:n”

<script> 
var str = "Wed Aug 19 11:40:10 +0800 2023"//自己定义的时间
    function sinaTime(str) {
      var dt1 = new Date()//获取当前时间
      var dt2 = new Date(str)//传入刚刚定义的时间
      var asbdt = dt1 - dt2//当前时间减去自己定义的时间的绝对值
      console.log(asbdt)

      if (0 > asbdt) {
        return "见鬼了"
      }
      else if (0 <= asbdt && asbdt < 60 * 1000) {//若时间差在(1,60s),则返回“刚刚”
        return "刚刚"
      }
      else if (60 * 1000 <= asbdt && asbdt < 60 * 60 * 1000) {//若时间差在(1,60分),则返回“n分钟前”
        var m = new Date(asbdt).getMinutes()//1970-01-01 08:02:30
        return `${m}分钟前`
      }
      else if (asbdt >= 60 * 60 * 1000) {
        var mo = (dt2.getMonth() + 1 + "").padStart(2, "0")//若月份小于10,则在其前面用0补充,下面一样的
        var d = (dt2.getDate() + "").padStart(2, "0")
        var h = dt2.getHours().toString().padStart(2, "0")
        var mu = dt2.getMinutes().toString().padStart(2, "0")
        var s = dt2.getSeconds().toString().padStart(2, "0")
        return `${mo}-${d}  ${h}:${mu}:${s}`//按照自己想要的格式编写返回值
      }
    }
    var re = sinaTime(str)//"刚刚"    "23分钟前"   "08-16 15:23"
    console.log(re)
</script> 

 

        习题02进阶:交易时段定义为周一到周五的早上 9 点~10 点 15,10 点 30~11 点 30,下午 1 点 30 到 3 点,晚上 21 点到次日凌晨 2 点半,请写一个函数判断现在是否在交易 时段内,如果不在则等多久才能等到交易时段。

                示例:现在是 2021 年 5 月 20 日 17:10,该函数判断结果应当为不在交易时段内, 等 3 小时 50 分钟后到交易时段(提示:周六凌晨是交易时间,周一凌晨不是交易 时间)

<script>
function show(str, now, nextStart) {
// 下一个交易时间
let nextInvail = new Date(nextStart).valueOf();
let nowTime = new Date(now).valueOf();
// 打印当前时间
console.log('当前时间:', now, `(星期${new Date(now).getDay()})`);
//相差的分钟数
if (str === 1) {
华清远见教育集团 – 高端 IT 就业培训专家
console.log('在交易时间段');
} else {
console.log('不在交易时间段内');
let cha = Math.trunc((nextInvail - nowTime) / 1000 / 60);
console.log(`等${Math.trunc(cha / 60)}小时${Math.trunc(cha % 60)}分钟后到交
易时间段`);
}
}
function showTime(tt) {
let now = new Date();
if (tt) now = new Date(tt);
let YMD = `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}`;
let HM = `${now.getHours()}:${now.getMinutes()}`;
let vailArray = [
/** 2, 5 周 2~周 5 的交易时间段 */
[2, 5, [
'00:00', '02:30', /** 凌晨也是交易时间 */
'09:00', '10:15', /** 交易时间段的 开始时间 和 结束时间 */
'10:30', '11:30',
'13:30', '15:00',
'21:00', '24:00'
]
],
[0, 0, []], /** 0, 0, 周 7 的交易时间段,距离下周一是 1 天,对应下标 1 */
[6, 6, ['00:00', '02:30']], /** 6, 6, 周 6,距离下周一 2 天,对应下标 2 */
[1, 1, [
/** 周一凌晨不是交易时间 */
'09:00', '10:15',
'10:30', '11:30',
'13:30', '15:00',
'21:00', '24:00'
]
]
];
let w = now.getDay();/* 星期几 */
/**找出测试时间星期几对应的下标:元素 0 和 1 是星期的起止值 */
const wInd = vailArray.findIndex(item => w >= item[0] && w <= item[1]);
//找时间段:在对应的星期设置的时间段(下标 2 的元素)里面找匹配的时间段
华清远见教育集团 – 高端 IT 就业培训专家
const hInd = vailArray[wInd][2].findIndex(hm => {
/**1,交易小时 > 检测时间的小时
*  2,或者
* 交易小时 === 测试时间的小时
* 并且
* 交易分钟数 >=测试的时间分钟数
*/
return hm.split(':')[0] / 1 > HM.split(':')[0] / 1 || (
hm.split(':')[0] / 1 == HM.split(':')[0] / 1
&&
hm.split(':')[1] / 1 >= HM.split(':')[1] / 1
);
});
if (hInd === -1) {
/**
* 1,-1 表示没有找到,肯定是周 6 或周天
* 2,因为周 1~周 5 有 24:00 兜底
*/
/**
* 1,wInd 就是对应的星期的下标,具体参考 vailArray 注释
* 2,下次交易时间必然是下周一的 09:00,所以,
* 从 00:00:00 开始,往后推迟 (wInd * 24 + 9) 小时
*/
let endVaild = new Date(YMD + ' 00:00:00').valueOf() + (wInd * 24 + 9) * 3600000;
show(0, YMD + ' ' + HM, new Date(endVaild));
} else if (hInd % 2 === 0) {
/**
* 1,下标是偶数,则表示是在交易时间段的 开始时间 之前
* 2,那么下一次交易时间也对应的就是这个 开始时间
*/
show(0, YMD + ' ' + HM, YMD + ' ' + vailArray[wInd][2][hInd])
} else if (hInd % 2 === 1) {
/**
* 1,下标是奇数,则表示是在交易时间段的 结束时间 之前 ;
* 2,那既然没有在开始时间之前(hInd % 2 === 0),
* 而又在 结束时间 之前,因此 就是在交易时间段之内
*/
show(1, YMD + ' ' + HM)
华清远见教育集团 – 高端 IT 就业培训专家
}
// setTimeout(showTime, 60000);
}
showTime('2022-07-01 01:59:40');
showTime('2022-07-02 01:30:40');
showTime('2022-07-04 01:30:40');
</script>

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值