• 关于日期与时间在代码开发中的应用(js中Date方法)


    GMT、UTC、时区、本地时和夏令时

    GMT(Greenwich Mean Time), 格林威治平时(也称格林威治时间)。
    它规定太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午12点。

    1972年之前,格林威治时间(GMT)一直是世界时间的标准。1972年之后,GMT 不再是一个时间标准了。

    UTC(Coodinated Universal Time),协调世界时,又称世界统一时间、世界标准时间、国际协调时间。由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。

    UTC 是现在全球通用的时间标准,由两部分组成

    • 原子时间(TAI, International Atomic Time):
      结合了全球400个所有的原子钟而得到的时间,它决定了我们每个人的钟表中,时间流动的速度。
    • 世界时间(UT, Universal Time):
      也称天文时间,或太阳时,他的依据是地球的自转,我们用它来确定多少原子时,对应于一个地球日的时间长度。

    时区: 从格林威治本初子午线起,经度每向东或者向西间隔15°,就划分一个时区,在这个区域内,大家使用同样的标准时间。

    全球共分为24个标准时区,相邻时区的时间相差一个小时。

    夏时令: 为节约能源而人为规定地方时间的制度。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。

    在施行夏令时的国家,一年里面有一天只有23小时(夏令时开始那一天),有一天有25小时(夏令时结束那一天),其他时间每天都是24小时。

    js中的Date方法

    js中主要内置的时间api是Date,目前新增有Temporal

    Temporal详解:https://juejin.cn/post/7065588689040048164
    貌似用的不多,网上相关的教程也不多,不过本来Date的就不多。

    Date使用方法

    1. 使用new Date创建时间对象
    2. 使用Date相关函数
    var date = new Date()
    var time = date.getDate()
    console.log(time) //输出几号
    
    • 1
    • 2
    • 3

    相关函数

    get系列:

    getDate()---------- 几号(1-31)

    getDay()----------- 周几(0-6)

    getFullYear()------ 四位数的年份

    getMonth()--------- 月份(0-11)

    getHours()--------- 小时(0-23)

    getMinutes()------- 分钟(0-59)

    getSeconds()------ 秒(0-59)

    getTime()----------- 返回1970年1月1日至今的毫秒数

    set系列:

    parse()------------ 返回1970年1月1日到指定日期的毫秒数

    setDate()--------- 设置一月的某一天(1-31)

    setFullYear()----- 设置年份

    setMonth()-------- 设置月份(0-11)

    setHours()--------- 设置小时(0-23)

    setMinutes()------- 设置分钟(0-59)

    setSeconds()------ 设置秒数(0-59)

    setTime --------------- 以毫秒数设置Date

    高频案例

    1.获取当前年月日

    function getNowDate() {
        let Time = null;
        let time = new Date;
    	var year = time.getFullYear();//获取年份
    	//获取月份,实现两位数显示,小于10显示0X
        let month = (time.getMonth() + 1) >=10? (time.getMonth() + 1) : "0" + (time.getMonth() + 1);
        let date = time.getDate() >=10 ? time.getDate() : "0" + time.getDate();
        return Time = year + "-" + month + "-" + date;
    }
    console.log(getNowDate()); //"2020-09-07
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    2.获取当前时分秒

    function getNowTime(){
        let date=new Date();
    	let hour = date.getHours().toString().padStart(2,"0")
    	let minute = date.getMinutes().toString().padStart(2,"0")
    	let second = date.getSeconds().toString().padStart(2,"0");
    	//padStart补全字符串长度
        return hour + ':' + minute + ':' + second
    }
    console.log(getNowTime()); //16:19:09
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3.通过时间戳获取时间

    function formatDateTime(timestamp) {
        let date = new Date(timestamp);
        let year = date.getFullYear();
    
        let month = date.getMonth() + 1;
        month = month < 10 ? ('0' + m) : m;
    
        let day = date.getDate();
        day = day < 10 ? ('0' + d) : d;
    
        let hour = date.getHours();
        hour = hour < 10 ? ('0' + h) : h;
    
        let minute = date.getMinutes();
    	minute = minute < 10 ? ('0' + minute) : minute;
    
        let second = date.getSeconds();
        second = second < 10 ? ('0' + second) : second;
    
        return year + '-' + mpnth + '-' + day+' '+ hour + ':' + minute + ':' + second;
    };
    console.log(formatDateTime(1599459858000)); //"2020-09-07 14:24:18"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    getYear() 返回的值不总是 4 位的数字
    对于介于 1900 与 1999 之间的年份,getYear() 方法仅返回两位数字。
    对于 1900 之前或 1999 之后的年份,则返回 4 位数字

  • 相关阅读:
    PID控制算法
    【Linux】基础IO —— 缓冲区深度剖析
    什么情况下适合使用静态路由?什么情况下适合使用动态路由?
    【LeetCode-198】打家劫舍(回溯&动归)
    Python爬取豆瓣电影+数据可视化,爬虫教程!
    C++ 单例模式的各种坑及最佳实践
    MySQL8.0.26安装配置教程(windows 64位)
    半年总结 -要有松弛感的慢生活
    python文件操作之shutil模块
    应急响应靶机训练-Linux1
  • 原文地址:https://blog.csdn.net/KwokWyman/article/details/126057707