美文网首页
js时间Date对象

js时间Date对象

作者: 香蕉不拿呢 | 来源:发表于2022-01-05 17:16 被阅读0次
    一.时间标准: GMT(格林尼治标准时间)和 UTC (协调世界时间)

    格林尼治位于伦敦郊区,其正好位于本初子午线(0度经线)上。格林尼治标准时间(Greenwich Mean Time,GMT),指的就是正午太阳横穿格林尼治子午线时的时间。1960年以前 GMT 曾作为基本时间计量系统被广泛应用,当时主要为了1840 年之后的铁路系统服务。
    但是后来,人们发现地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。 地球每天的自转是有些不规则的,而且正在缓慢减速。所以,格林尼治时间就不是很准确了,每隔一阵就会有误差,所以就不再被作为标准时间使用了。
    于是后来就出现了 协调世界时间(Universal Time Coordinated,UTC),它是由原子钟提供的。 自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息,UTC是基于标准的GMT提供的准确时间。
    原子时与以往的计时系统不同,它非常精确并且不以某地的平均太阳时为基准,但是遇有地球自转速度不均匀,原子时与世界时之间的时差便日积月累,因此,UTC 会在一段时期后加上正或负的闰秒来补偿。位于巴黎的国际地球自转事务中央局(IERS) 负责决定何时加入闰秒。
    现在为了方便,我们一般将GMT与UTC视为等同,它们都是标准时间。

    new Date() // Wed Jan 05 2022 11:11:03 GMT+0800 (中国标准时间) ---- GMT+0800 指北京时间
    JSON.stringify(new Date()) // "2022-01-05T06:20:52.223Z" ---- UTC
    
    二.unix时间戳

    unix时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
    在编程语言中,使用这种方式来表示时间更轻量。
    假如在1970-01-01之前的时间,会带有负的时间戳。

    三.Date对象
    1.Date()
    new Date();
    new Date(value);
    new Date(dateString);
    new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
    

    参数支持string字符串,number类型,和多参数。
    Date()构造函数有四种基本形式

    • 没有参数
      如果没有提供参数,那么新创建的Date对象表示实例化时刻的日期和时间。

    • Unix时间戳
      value
      一个 Unix 时间戳(Unix Time Stamp),它是一个整数值,表示自1970年1月1日00:00:00 UTC(the Unix epoch)以来的毫秒数,忽略了闰秒。请注意大多数 Unix 时间戳功能仅精确到最接近的秒。

    • 时间字符串
      dateString
      表示日期的字符串值。

    • 分别提供日期与时间的每一个成员
      当至少提供了年份与月份时,这一形式的 Date() 返回的 Date 对象中的每一个成员都来自下列参数。没有提供的成员将使用最小可能值(对日期为1,其他为0)。

    year
    表示年份的整数值。 0到99会被映射至1900年至1999年,其它值代表实际年份。参见 示例。
    monthIndex
    表示月份的整数值,从 0(1月)到 11(12月)。
    date可选
    表示一个月中的第几天的整数值,从1开始。默认值为1。
    hours 可选
    表示一天中的小时数的整数值 (24小时制)。默认值为0(午夜)。
    minutes 可选
    表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为0。
    seconds 可选
    表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为0。
    milliseconds 可选
    表示一个完整时间的毫秒部分的整数值。默认值为0。
    
    2.new Date()获取格式化时间
    let date = new Date()
    date.getFullYear() 2022 // 获取年
    date.getMonth() 0 // 获取月 注意:获取的月份值比真实值小1,下标是从0开始的。
    date.getDate() 5 // 获取日
    date.getHours() 15 // 获取时
    date.getMinutes() 27 // 获取分
    date.getSeconds() 23 // 获取秒
    date.getMilliseconds() 198 // 获取毫秒
    date.toString() 'Wed Jan 05 2022 15:44:17 GMT+0800 (中国标准时间)' // 获取该时间对象字符串
    date.toDateString() "Wed Jan 05 2022"  // 获取日期部分
    date.toTimeString() "15:47:30 GMT+0800 (中国标准时间)"   // 获取时间部分
    

    Date.toLocaleString([locales [, options]]) 不同的语言返回不同的字符串

    /**
    * @params locales 可选。语言
    * @params options 可选。可以设置一些属性的对象
    **/ 
    date.toLocaleString() '2022/1/5 下午3:27:23' // 获取日期对象的字符串
    date.toLocaleDateString() '2022/1/5' // 获取日期部分的字符串
    date.toLocaleTimeString() '下午3:27:23' // 获取日期对象时间部分的字符串
    
    date.toLocaleString('ar-SA') "٢/٦/١٤٤٣ هـ ٤:٠٢:٢٧ م"
    date.toLocaleString('zh-CN') "2022/1/5 下午4:02:27"
    

    locales 的合法值为

    ar-SA 阿拉伯语(沙特阿拉伯) bn-BD Bangla(孟加拉国) bn-IN 孟加拉语(印度) cs-CZ 捷克语(捷克共和国) da-DK 丹麦语(丹麦) de-AT 奥地利 德语 de-CH“瑞士”德语 de-DE 标准德语(在德国使用) el-GR 现代希腊语 en-AU 澳大利亚英语 en-CA 加拿大英语 en-GB 英式英语 en-IE 爱尔兰语 英语 en-IN 印度 英语 en-NZ 新西兰 英语 en-US 美国英语 en-ZA 英语(南非) es-AR 阿根廷 西班牙语 es-CL 智利 西班牙语 es-CO 哥伦比亚西班牙语 es-ES 卡斯蒂利亚西班牙语(在西班牙中北部使用) es-MX 墨西哥 西班牙语 es-US 美式 西班牙语 fi-FI 芬兰语(芬兰) fr-BE 比利时 法语 fr-CA 加拿大法语 fr-CH “瑞士” 法语 fr-FR 标准法语(尤其是在法国) he-IL 希伯来语(以色列) hi-IN 印地语(印度) hu-HU 匈牙利语(匈牙利) id-ID 印度尼西亚语(印度尼西亚) it-CH“瑞士”意大利语 it-IT 标准意大利语(意大利语) jp-JP 日语(日本) ko-KR 韩文(大韩民国) nl-BE 比利时荷兰语 nl-NL 标准荷兰语(荷兰语) no-NO 挪威语(挪威) pl-PL 波兰语(波兰) pt-BR 巴西葡萄牙语 pt-PT 欧洲葡萄牙语(在葡萄牙书写和使用) ro-RO 罗马尼亚语(罗马尼亚) ru-RU 俄语(俄罗斯联邦) sk-SK 斯洛伐克语(斯洛伐克) sv-SE 瑞典语(瑞典) ta-IN 印度语 泰米尔语 ta-LK 斯里兰卡泰米尔语 th-TH Thai (泰国) tr-TR 土耳其语(土耳其) zh-CN 中国大陆,简体字 zh-HK 香港,繁体字 zh-TW 台湾,繁体字
    
    3.获取时间戳
    let date = new Date()
    date.valueOf() 1641369747293
    date.getTime() 1641369747293
    
    4.字符串转时间格式

    支持的类型:"yy,MM,dd","yy/MM/dd","yy-MM-ddThh:mm:dd"
    不支持的类型:"yy-MM-dd"格式低版本ie浏览器不支持

    new Date("2021,1,5") Tue Jan 05 2021 00:00:00 GMT+0800 (中国标准时间)
    new Date("2021/1/5") Tue Jan 05 2021 00:00:00 GMT+0800 (中国标准时间)
    new Date("2021-01-05T16:12:13") Tue Jan 05 2021 16:12:13 GMT+0800 (中国标准时间)
    
    5.时间戳转时间格式

    时间戳支持负数,表示1970-01-01以前的时间

    var date = new Date()
    var time = date.getTime() // 1641372259359
    new Date(time) // Wed Jan 05 2022 16:44:19 GMT+0800 (中国标准时间)
    new Date(-10000000000)  // Sun Sep 07 1969 14:13:20 GMT+0800 (中国标准时间)
    

    相关文章

      网友评论

          本文标题:js时间Date对象

          本文链接:https://www.haomeiwen.com/subject/pjhkcrtx.html