当前位置: 首页 > news >正文

Web APIs——日期对象的使用

1、日期对象

日期对象:用来表示时间的对象

作用:可以得到当前系统时间

1.1实例化

在代码中发现了new关键字时,一般将这个操作称为实例化

创建一个时间对象并获取时间

        获得当前时间

        const date = new Date()

    <script>// 实例化 new // 1. 得到当前时间const date = new Date()console.log(date)// 2. 指定时间const date1 = new Date('2023-11-1 09:03')console.log(date1)</script>

1.2时间对象方法

使用场景:因为日期对象返回的数据我们不能直接使用,所以需要转换为实际开发中常用的格式

方法作用说明
getFullYear()获得年份获取四位年份
getMonth()获得月份取值为0~11
getDate()获取月份中的每一天不同月份取值也不相同
getDay()获取星期取值为0~6
getHours()获取小时取值为0~23
getMinutes()获取分钟取值为0~59
getSeconds()获取秒取值为0~59
    <script>// 获得日期对象const date = new Date()// 使用里面的方法console.log(date.getFullYear)console.log(date.date.getMonth() + 1)console.log(date.getDate)console.log(date.getDay)</script>

1.2.3 页面显示时间 

需求:将当前时间以:YYYY-MM-DD HH:mm形式显示在页面 2008-08-08 08:08

分析:

①:调用时期对象方法进行转换

②:记得数字要补0

方法一:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 300px;height: 40px;border: 1px solid #000;text-align: center;line-height: 40px;}</style>
</head>
<body><div></div><script>const div = document.querySelector('div')function getMgDate(){const date = new Date()let h = date.getHours()let m = date.getMinutes()let s = date.getSeconds()h = h < 10 ? '0' + h : hm = m < 10 ? '0' + m : ms = s < 10 ? '0' + s : sreturn `今天是: ${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}号 ${h}:${m}:${s}`}div.innerHTML = getMgDate()setInterval(function () {div.innerHTML = getMgDate()}, 1000)</script>
</body>
</html>

方法二:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>div {width: 300px;height: 40px;border: 1px solid #000;text-align: center;line-height: 40px;}</style>
</head>
<body><div></div><script>const div = document.querySelector('div')// 得到日期对象const date = new Date()div.innerHTML = date.toLocaleString()      setInterval(function(){const date = new Date()div.innerHTML = date.toLocaleString() },1000)// div.innerHTML = date.toLocaleDateString()// div.innerHTML = date.toLocaleTimeString() </script></body>
</html>

1.3时间戳

使用场景:如果计算倒计时效果,前面方法无法直接计算,需要借助于时间戳完成

什么是时间戳:

  • 是指1970年01月01日00时00分00秒起至现在的毫秒数,它是一种特殊的计量时间的方式

算法:

  • 将来的时间戳 - 现在的时间戳 = 剩余时间毫秒数
  • 剩余时间毫秒数 转换为 剩余时间的 年 月 日 时 分 秒 就是 倒计时时间
  • 比如  将来时间戳 2000ms - 现在时间戳 1000ms = 1000ms
  • 1000ms转换为就是 0小时0分1秒

1.3.1 三种方式获取时间戳

(1) 使用getTime() 方法

(2) 简写 +new Date()

  • 无需实例化
  • 可以返回当前时间戳或者指定的时间戳

(3) 使用Date.now()

  • 无需实例化
  • 但是只能得到当前的时间戳,而前面两种可以返回指定时间的时间戳

根据日期Day() 0~6 

    <script> const  arr = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六']console.log(arr[new Date().getDay()])</script>

2、倒计时效果

需求:计算到下课还有多少时间

分析:

①:用将来时间减去现在时间就是剩余时间

②:核心:使用将来的时间戳减去现在的时间戳

③:把剩余的时间转换为 天 时  分 秒

注意:

  1. 通过时间戳得到是毫秒,需要转换为秒在计算
  2. 转换公式:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><style>.countdown {width: 240px;height: 305px;text-align: center;line-height: 1;color: #fff;background-color: brown;/* background-size: 240px; *//* float: left; */overflow: hidden;}.countdown .next {font-size: 16px;margin: 25px 0 14px;}.countdown .title {font-size: 33px;}.countdown .tips {margin-top: 80px;font-size: 23px;}.countdown small {font-size: 17px;}.countdown .clock {width: 142px;margin: 18px auto 0;overflow: hidden;}.countdown .clock span,.countdown .clock i {display: block;text-align: center;line-height: 34px;font-size: 23px;float: left;}.countdown .clock span {width: 34px;height: 34px;border-radius: 2px;background-color: #303430;}.countdown .clock i {width: 20px;font-style: normal;}</style>
</head><body><div class="countdown"><p class="next">今天是2222年2月22日</p><p class="title">下班倒计时</p><p class="clock"><span id="hour">00</span><i>:</i><span id="minutes">25</span><i>:</i><span id="scond">20</span></p><p class="tips">18:30:00下课</p></div><script>// 随机颜色函数// 1. 自定义一个随机颜色函数function getRandomColor(flag = true) {if (flag) {// 3. 如果是true 则返回 #fffffflet str = '#'let arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']// 利用for循环随机抽6次 累加到 str里面for (let i = 1; i <= 6; i++) {// 每次要随机从数组里面抽取一个  // random 是数组的索引号 是随机的let random = Math.floor(Math.random() * arr.length)// str = str + arr[random]str += arr[random]}return str} else {// 4. 否则是 false 则返回 rgb(255,255,255)let r = Math.floor(Math.random() * 256)  // 55let g = Math.floor(Math.random() * 256)  // 89let b = Math.floor(Math.random() * 256)  // 255return `rgb(${r},${g},${b})`}}// 页面刷新随机得到颜色const countdown = document.querySelector('.countdown')countdown.style.backgroundColor = getRandomColor()// 函数封装 getCountTimefunction getCountTime() {// 1. 得到当前的时间戳const now = +new Date()// 2. 得到将来的时间戳const last = +new Date('2023-11-1 18:30:00')// console.log(now, last)// 3. 得到剩余的时间戳 count  记得转换为 秒数const count = (last - now) / 1000// console.log(count)// 4. 转换为时分秒// h = parseInt(总秒数 / 60 / 60 % 24)   //   计算小时// m = parseInt(总秒数 / 60 % 60);     //   计算分数// s = parseInt(总秒数 % 60);   // let d = parseInt(count / 60 / 60 / 24)               //   计算当前秒数let h = parseInt(count / 60 / 60 % 24)h = h < 10 ? '0' + h : hlet m = parseInt(count / 60 % 60)m = m < 10 ? '0' + m : mlet s = parseInt(count % 60)s = s < 10 ? '0' + s : sconsole.log(h, m, s)//  5. 把时分秒写到对应的盒子里面document.querySelector('#hour').innerHTML = hdocument.querySelector('#minutes').innerHTML = mdocument.querySelector('#scond').innerHTML = s}// 先调用一次getCountTime()// 开启定时器setInterval(getCountTime, 1000)</script>
</body></html>

相关文章:

  • 实习常用代码——【js】
  • C++ Qt QLineEdit如何响应回车事件
  • git push 部分 commit
  • qt 系列(二)---qt designer通过设置控件样式表进行背景颜色设置
  • CentOS 安装 Hadoop Local (Standalone) Mode 单机模式
  • OpenLayers实战,OpenLayers结合下拉菜单实现城市切换,动态切换城市边界到地图视图视角范围内
  • 视频号的视频怎么保存到相册,第三方工具快速下载保存!
  • Linux上编译sqlite3库出现undefined reference to `sqlite3_column_table_name‘
  • 【硬件中断和软件中断的区别】
  • Unity AssetBundle打包
  • 智能井盖传感器有哪些?万宾科技智能井盖效果
  • 《golang设计模式》第三部分·行为型模式-02-命令模式(Command)
  • 分享一下怎么做小程序营销活动
  • 网上办理流量卡还需要填写身份证号?你想要的答案来了。
  • Go 语言常用命令详解20231102
  • [PHP内核探索]PHP中的哈希表
  • 【EOS】Cleos基础
  • 10个最佳ES6特性 ES7与ES8的特性
  • Android 架构优化~MVP 架构改造
  • Debian下无root权限使用Python访问Oracle
  • Git的一些常用操作
  • gulp 教程
  • Kibana配置logstash,报表一体化
  • leetcode388. Longest Absolute File Path
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 记录:CentOS7.2配置LNMP环境记录
  • 数据科学 第 3 章 11 字符串处理
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 物联网链路协议
  • 协程
  • 原生JS动态加载JS、CSS文件及代码脚本
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #图像处理
  • (70min)字节暑假实习二面(已挂)
  • (Python第六天)文件处理
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .chm格式文件如何阅读
  • .NET 发展历程
  • .net 托管代码与非托管代码
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET处理HTTP请求
  • .NET中两种OCR方式对比
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @拔赤:Web前端开发十日谈
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [C#]DataTable常用操作总结【转】