IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> JavaScript/JS关于时间函数的学习,并结合实际业务例子进入加强记忆,附快速获取当天、昨天等时间函数 -> 正文阅读

[JavaScript知识库]JavaScript/JS关于时间函数的学习,并结合实际业务例子进入加强记忆,附快速获取当天、昨天等时间函数

JavaScript Date(日期) 对象

今天我们重点学习JavaScript中的Date对象。

Date对象用于处理日期和时间。可以通过new关键词来定义Date对象。

获取时间

  • 如获取当前系统时间。
var now = new Date();
console.log(now); //控制台的输出结果为Mon May 09 2022 13:48:39 GMT+0800 (中国标准时间)
  • 也可以获取指定参数的时间。
//参数1:年份
//参数2:月份 (注意从0开始)
//参数3:日
//参数4:小时
//参数5:分钟
//参数6:秒
var date1 = new Date(new Date(2022,0,1,09,30,00));
console.log(date1);//控制台的输出结果为Sat Jan 01 2022 09:30:00 GMT+0800 (中国标准时间)
//参数非必填,可按需省略,不填默认为0
var date2 = new Date(2022,0,9);
console.log(date2);//控制台的输出结果为Sun Jan 09 2022 00:00:00 GMT+0800 (中国标准时间)
  • 也可以将时间戳作为参数,转化成时间。
var date3 = new Date(1652076712317);
console.log(date3);//控制台的输出结果为Mon May 09 2022 14:11:52 GMT+0800 (中国标准时间)
  • 当我们获取到时间之后, 可以通过其子函数获取对应的年、月、日、时、分、秒、时间戳等。
var now = new Date();
var year = now.getFullYear();//2022
var month = now.getMonth();//4 注意 4代表5月份
var day = now.getDate();//9
var hour = now.getHours(); // 14, 24小时制
var minute = now.getMinutes(); // 24
var second = now.getSeconds(); // 22
var time = now.getTime();//1652077528307 时间戳
  • 有了这些子函数,我们就可以利用setDate等函数对时间进行动态设置,如标题中提到的获取昨天的时间。
var now = new Date();
var yestoday = now.setDate(now.getDate()-1);
console.log(yestoday)//控制台的输出结果为1651991719834
//对时间戳进行转化
yestoday = new Date(yestoday);
console.log(yestoday)//控制台的输出结果为Sun May 08 2022 14:37:39 GMT+0800 (中国标准时间)
//
//
//合并成代码
var now = new Date();
var yestoday = new Date(now.setDate(now.getDate()-1));
console.log(yestoday)//控制台的输出结果为Sun May 08 2022 14:41:00 GMT+0800 (中国标准时间)
//注意: 如果增加天数会改变月份或者年份,那么日期对象会自动完成这种转换。
  • 如今天为9号,需获取上个月9号的时间,则需使用setMonth,其他如setFullYear,setHours均同理。
var now = new Date();
var yesMonth = now.setMonth(now.getMonth()-1);
console.log(yesMonth)//控制台的输出结果为1649486669147
//对时间戳进行转化
yesMonth = new Date(yesMonth);
console.log(yesMonth)//控制台的输出结果为Sat Apr 09 2022 14:44:50 GMT+0800 (中国标准时间)
//
//
//合并成代码
var now = new Date();
var yesMonth = new Date(now.setMonth(now.getMonth()-1));
console.log(yesMonth);//控制台的输出结果为Sat Apr 09 2022 14:45:44 GMT+0800 (中国标准时间)
//注意: 如果增加月份会改变年份,那么日期对象会自动完成这种转换。

格式化时间

当我们能够正确拿到时间之后,需要对时间进行格式化,以便更好的在界面上展示,或者使用正确的格式与后台数据进行交互。

var now = new Date();
console.log(now);//控制台的输出结果为Mon May 09 2022 14:58:53 GMT+0800 (中国标准时间)
var formatNow = formatDate(now);
console.log(formatNow);//控制台的输出结果为2022-05-09 14:58:53


function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date + ' ' + hour + ':' + minute + ':' + second;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }

结合上一节的内容,整理获取昨天、上个月格式化的时间。

var now = new Date();
var yestoday = formatDate(new Date(now.setDate(now.getDate()-1)));
console.log(yestoday)//控制台的输出结果为2022-05-08 15:02:41

var now = new Date();
var yesMonth = formatDate(new Date(now.setMonth(now.getMonth()-1)));
console.log(yesMonth);//控制台的输出结果为2022-04-09 15:03:30

function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date + ' ' + hour + ':' + minute + ':' + second;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }

实际业务

由于列表数据量过大,默认进入页面时只展示一周以内的数据。需要在进入页面时获取当前系统时间前7天的时间作为开始时间传入后台。后台接收的格式为 yyyy-mm-dd。

var now = new Date();
var beforeDay = formatDate(new Date(now.setDate(now.getDate()-7)));
console.log(beforeDay)//控制台的输出结果为2022-05-02
function formatDate(time) {
      if (time != null) {
        var datetime = new Date();
        datetime.setTime(time);
        var year = datetime.getFullYear();
        var month = (datetime.getMonth() + 1) < 10 ? "0" + (datetime.getMonth() + 1) : (datetime.getMonth() + 1);
        var date = datetime.getDate() < 10 ? "0" + datetime.getDate() : datetime.getDate();
        var hour = datetime.getHours() < 10 ? "0" + datetime.getHours() : datetime.getHours();
        var minute = datetime.getMinutes() < 10 ? "0" + datetime.getMinutes() : datetime.getMinutes();
        var second = datetime.getSeconds() < 10 ? "0" + datetime.getSeconds() : datetime.getSeconds();
       //获得正确的年月日时分秒之后,可根据界面要求进行自由组合
       //如需转化成yyyy-mm-dd HH:mm:ss
        return year + "-" + month + "-" + date;
       //如需转化成yyyy/mm/dd
       // return year + "/" + month + "/" + date;
      } else {
        return "---";
      }
    }
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:48:02  更:2022-05-10 11:50:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/30 1:33:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码