Javascript之Date对象详解,日期货合作选择权威指南

JavaScript 日期权威指南

2018/09/05 · JavaScript
· 日期

原来的书文出处: _小生_   

Date

Date对象是JavaScript提供的日期和岁月的操作接口

Date对象有多少个静态方法

  • Date.now()

now方法重临当前距离1966年7月7日00:00:00的纳秒数

Date.now(); // 1427974222853

  • Date.parse()

parse方法用来分析日期字符串,重回距离一九七〇年五月31日 00:00:00的飞秒数

日子字符串的格式应该完全或然有些符合YYYY-MM-DDTHH:mm:ss.sssZ格式,Z表示时区,是可选的

如若条分缕析战败,重临NaN

Date.parse(“January 26, 2011 13:51:50”)
Date.parse(“Mon, 25 Dec 1995 13:30:00 GMT”)
Date.parse(“Mon, 25 Dec 1995 13:30:00 +0430”)
Date.parse(“2011-10-10”)
Date.parse(“2011-10-10T14:48:00”)

  • Date.UTC()

默许景况下,Date对象回来的都是当下时区的时光

Date.UTC方法能够回来UTC时间。该办法接受年、月、日等变量作为参数,重返当前相差一九七〇年111月30日00:00:00 UTC的阿秒数

Date.UTC(2015,0,1,2,3,4,567); //1420077784567

  • Date()

Date函数能够直接调用,再次回到3个脚下日子和岁月的字符串,那时候是不是有参数结果一致

Date(); // “Thu Apr 02 2015 19:20:29 GMT+0800 (CST)”

  • new Date()

动用Date构造函数成立七个Date的实例

  • new Date();
    实例时间为日前时刻,同时实例某个措施

  • get

Date.prototype.get提姆e():再次来到实例对象距离1969年三月110日00:00:00对应的阿秒数,等同于valueOf方法

Date.prototype.getDate():重返实例对象对应每一个月的几号(从1上马)

Date.prototype.getDay():重回星期,星期四为0,周一为1,以此类推

Date.prototype.getFullYear():重返四个人的年度

Date.prototype.getMonth():再次回到月份(0意味着10月,11意味11月)

Date.prototype.getHours():重返小时(0-23)

Date.prototype.getMilliseconds():再次回到纳秒(0-999)

Date.prototype.getMinutes():重临分钟(0-59)

Date.prototype.getSeconds():返回秒(0-59)

Date.prototype.getTimezoneOffset():再次回到当前时光与UTC的时区差别,以分钟表示,再次回到结果考虑到了夏令时因素

  • set

Date.prototype.setDate(date):设置实例对象对应的各种月的几号(1-31),再次回到改变后飞秒时间戳

Date.prototype.setFullYear(year [, month, date]):设置三个人年份

Date.prototype.setHours(hour [, min, sec, ms]):设置小时(0-23)

Date.prototype.setMilliseconds():设置纳秒(0-999)

Date.prototype.setMinutes(min [, sec, ms]):设置分钟(0-59)

Date.prototype.setMonth(month [, date]):设置月份(0-11)

Date.prototype.setSeconds(sec [, ms]):设置秒(0-59)

Date.prototype.setTime(milliseconds):设置飞秒时间戳

  • Date.prototype.toString()

toString方法重回三个完整的时刻字符串

var today = new Date();
today.toString(); // “Fri Apr 03 2015 11:17:29 GMT+0800 (CST)”
Date.prototype.toUTCString(),Date.prototype.toISOString()

toUTCString方法再次回到对应的UTC时间,也便是比Hong Kong时间晚7个钟头。toISOString方法重返对应时间的ISO8601写法。

var today = new Date(1362790014000);

today.toUTCString(); //

today.toISOString(); //

  • Date.prototype.toDateString(),Date.prototype.toTimeString()

toDateString方法重临日期的字符串格局,toTimeString方法重回时间的字符串方式。

var today = new Date(1362790014000);

today.toDateString(); // “Fri Apr 03 2015”

today.toTimeString(); // “11:17:29 GMT+0800 (CST)”
toLocalDateString, toLocalTimeString

toLocalDateString方法重返贰个字符串,代表日期的本地写法

toLocalTimeString方法重返3个字符串,代表时间的地点写法

var today = new Date(1362790014000);

today.toLocaleDateString(); // “2015/4/3”

today.toLocaleTimeString(); // “上午11:17:29”

  • new Date(milliseconds)

Date对象接受从一九六六年11月1日00:00:00
UTC初叶盘算的飞秒数作为参数。那意味假诺将Unix时间戳作为参数,必须将Unix时间戳乘以1000。

new Date(1378218728000); // Tue Sep 03 2013 22:32:08 GMT+0800 (CST)

// 一九六九年三月十日的零时
var Jan02_1970 = new Date(3600241000); // Fri Jan 02 1970 08:00:00
GMT+0800 (CST)

  • new Date(datestring)

Javascript之Date对象详解,日期货合作选择权威指南。Date对象还收受3个日期字符串作为参数,重返所对应的年月。全部能够被Date.parse()方法分析的日期字符串,都能够当作Date对象的参数

new Date(“2013-02-15”)
new Date(“2013-FEB-15”)
new Date(“FEB, 15, 2013”)
new Date(“FEB 15, 2013”)
new Date(“Feberuary, 15, 2013”)
new Date(“Feberuary 15, 2013”)
new Date(“15, Feberuary, 2013”)
new Date(year, month [, day, hours, minutes, seconds, ms])

在多少个参数的事态下,Date对象将其分别作为对应的年、月、日、时辰、分钟、秒和皮秒。要是利用那种用法,最少须要钦点五个参数(年和月),别的参数都以可选的,私下认可等于0。若是只使用年三个参数,Date对象会将其表明为飞秒数。

new Date(2013) // Thu Jan 01 1970 08:00:02 GMT+0800 (CST)
new Date(2013,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,1,0,0,0,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
上边代码(除了第②行)重返的是二〇一二年11月二16日零点的光阴,能够看出月份从0开首总结,因而二月是0,一月是11。但是,月份内部的天命从1从头揣测。

这几个参数假使超越了例行范围,会被活动折算。比如,即使月设为15,尽管折算为下一年的一月。参数还能应用负数,表示扣去的日子。

new Date(2013,0) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,-1) // Sat Dec 01 2012 00:00:00 GMT+0800 (CST)
new Date(2013,0,1) // Tue Jan 01 2013 00:00:00 GMT+0800 (CST)
new Date(2013,0,0) // Mon Dec 31 2012 00:00:00 GMT+0800 (CST)
new Date(2013,0,-1) // Sun Dec 30 2012 00:00:00 GMT+0800 (CST)

  • 日子运算

类型转换时,Date对象的实例假诺转为数值,则相当对应的皮秒数;假设转为字符串,则也就是对应的日子字符串。所以,七个日子对象实行减法运算,重临的就是它们间隔的飞秒数;进行加法运算,再次回到的正是一连后的三个字符串。

var then = new Date(2013,2,1);
var now = new Date(2013,3,1);

now – then
// 2678400000

now + then
// “Mon Apr 01 2013 00:00:00 GMT+0800 (CST)Fri Mar 01 2013 00:00:00
GMT+0800 (CST)”

Date Date对象用来代表日期和岁月。
要收获系统当下时刻,用:
var now = new Date();
now; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
now.getFullYear(); // 2015, 年份
now.getMonth(); // 5, 月份,注意月份范围是0~11,5代表十月
now.getDate(); // 24, 表示24号
now.getDay(); // 3, 表示周二
now.getHours(); // 19, 24小时制
now.getMinutes(); // 49, 分钟
now.getSeconds(); // 22, 秒
now.getMilliseconds(); // 875, 毫秒数
now.getTime(); // 1435146562875, 以number格局表示的流年戳
专注,当前些天子是浏览器从本机操作系统获取的时间,所以不必然标准,因为用户能够把当前时光设定为别的值。
一经要创立三个钦点日期和时间的Date对象,能够用:

Date对象即日期时间对象,它的要紧成效是兑现对日期时间的拍卖

简介

澳门葡京 1

JavaScript通过有力的对象为咱们提供日期处理效果:日期。

正文确实_不是_谈论 Moment.js
,笔者觉着它是拍卖日期的最佳库,你应有在处理日期时大约总是选用它。

var d = new Date(2015, 5, 19, 20, 15, 30, 123);
d; // Fri Jun 19 2015 20:15:30 GMT+0800 (CST)
你只怕观测到了3个相当尤其坑爹的地点,便是JavaScript的月度范围用整数表示是0~11,0意味着十七月,1意味着三月……,所以要代表1月,我们传入的是5!那纯属是JavaScript的设计者当时脑抽了一晃,不过未来要修复已经非常小概了。
第二种创立三个点名日期和岁月的法子是分析八个适合ISO 8601格式的字符串:
var d = Date.parse(‘2015-06-24T19:49:22.875+08:00’);
d; // 1435146562875
但它回到的不是Date对象,而是2个年华戳。不过有时间戳就足以很不难地把它转换为一个Date:
var d = new Date(1435146562875);
d; // Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
时区

1、创建Date对象

Date对象

Date对象实例表示单个时间点。

即便被命名为Date,它也处理时间。

Date对象表示的光阴总是按浏览器所在时区突显的,可是大家既能够显得本地时间,也足以来得调整后的UTC时间:

复制代码 代码如下:

初始化Date对象

我们运用初叶化Date对象

new Date()

1
new Date()

那将开创3个针对当前时刻的Date对象。

在里头,日期以一九六六年三月二一日(UTC)以来的纳秒数表示。那个日子很关键,因为就总结机而言,那正是成套从头的地点。

您可能熟习UNIX时间戳:它代表自该着名日期以来经过的seconds数。

最重要:UNIX时间戳的原由以秒为单位。JavaScript以阿秒为单位记录原因。

若果大家有UNIX时间戳,我们得以应用实例化JavaScript Date对象

const timestamp = 1530826365 new Date(timestamp * 1000)

1
2
const timestamp = 1530826365
new Date(timestamp * 1000)

假若大家传递0,大家将获得3个Date对象,表示一九六七年一月30日(UTC)的时刻:

new Date(0)

1
new Date(0)

假如大家传递3个字符串而不是叁个数字,那么Date对象使用parse方法来规定你传递的日期。例子:

new Date(‘2018-07-22’) new Date(‘2018-07’) //July 1st 2018, 00:00:00 new
Date(‘2018′) //Jan 1st 2018, 00:00:00 new Date(’07/22/2018’) new
Date(‘2018/07/22’) new Date(‘2018/7/22’) new Date(‘July 22, 2018’) new
Date(‘July 22, 2018 07:22:13’) new Date(‘2018-07-22 07:22:13’) new
Date(‘2018-07-22T07:22:13′) new Date(’25 March 2018′) new Date(’25 Mar
2018′) new Date(’25 March, 2018’) new Date(‘March 25, 2018’) new
Date(‘March 25 2018’) new Date(‘March 2018’) //Mar 1st 2018, 00:00:00
new Date(‘2018 March’) //Mar 1st 2018, 00:00:00 new Date(‘2018 MARCH’)
//Mar 1st 2018, 00:00:00 new Date(‘2018 march’) //Mar 1st 2018, 00:00:00

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
new Date(‘2018-07-22’)
new Date(‘2018-07’) //July 1st 2018, 00:00:00
new Date(‘2018’) //Jan 1st 2018, 00:00:00
new Date(’07/22/2018′)
new Date(‘2018/07/22’)
new Date(‘2018/7/22’)
new Date(‘July 22, 2018’)
new Date(‘July 22, 2018 07:22:13’)
new Date(‘2018-07-22 07:22:13’)
new Date(‘2018-07-22T07:22:13’)
new Date(’25 March 2018′)
new Date(’25 Mar 2018′)
new Date(’25 March, 2018′)
new Date(‘March 25, 2018’)
new Date(‘March 25 2018’)
new Date(‘March 2018’) //Mar 1st 2018, 00:00:00
new Date(‘2018 March’) //Mar 1st 2018, 00:00:00
new Date(‘2018 MARCH’) //Mar 1st 2018, 00:00:00
new Date(‘2018 march’) //Mar 1st 2018, 00:00:00

此间有为数不少借风使船。您能够在多少个月或几天内添加或简捷前导零。

小心月/日的地点,可能您只怕最后将月份误解为当天。

你也能够运用Date.parse:

Date.parse(‘2018-07-22’) Date.parse(‘2018-07’) //July 1st 2018, 00:00:00
Date.parse(‘2018′) //Jan 1st 2018, 00:00:00 Date.parse(’07/22/2018’)
Date.parse(‘2018/07/22’) Date.parse(‘2018/7/22’) Date.parse(‘July 22,
2018’) Date.parse(‘July 22, 2018 07:22:13’) Date.parse(‘2018-07-22
07:22:13’) Date.parse(‘2018-07-22T07:22:13’)

1
2
3
4
5
6
7
8
9
10
Date.parse(‘2018-07-22’)
Date.parse(‘2018-07’) //July 1st 2018, 00:00:00
Date.parse(‘2018’) //Jan 1st 2018, 00:00:00
Date.parse(’07/22/2018′)
Date.parse(‘2018/07/22’)
Date.parse(‘2018/7/22’)
Date.parse(‘July 22, 2018’)
Date.parse(‘July 22, 2018 07:22:13’)
Date.parse(‘2018-07-22 07:22:13’)
Date.parse(‘2018-07-22T07:22:13’)

Date.parse将赶回1个时间戳(以皮秒为单位)而不是Date对象。

您还足以传递一组表示日期各部分的有序值:年,月(从0起始),日,时辰,分钟,秒和纳秒:

new Date(2018, 6, 22, 7, 22, 13, 0) new Date(2018, 6, 22)

1
2
new Date(2018, 6, 22, 7, 22, 13, 0)
new Date(2018, 6, 22)

最小值应该是二个参数,不过当先3/6JavaScript引擎的表达都比那么些少:

new Date(2018, 6) //Sun Jul 01 2018 00:00:00 GMT+0200 (Central European
Summer Time) new Date(2018) //Thu Jan 01 1970 01:00:02 GMT+0100 (Central
European Standard Time)

1
2
new Date(2018, 6) //Sun Jul 01 2018 00:00:00 GMT+0200 (Central European Summer Time)
new Date(2018) //Thu Jan 01 1970 01:00:02 GMT+0100 (Central European Standard Time)

在其余那个情况下,生成的日子都相对于总结机的时区。那代表两台不一样的处理器或许会为同216日期对象输出分裂的值。

JavaScript没有别的有关时区的音讯,会将日期视为UTC,并自动执行到日前电脑时区的变换。

所以,总括一下,您能够经过4种办法创建新的Date对象

  • 不传参数,创造三个象征“未来”的Date对象
  • 传送number,表示从格林威治标准时间壹玖陆玖年五月1三十日00:00方始的阿秒数
  • 传递三个字符串,代表二个日子
  • 传递一组参数,它们代表日期的两样部分

var d = new Date(1435146562875);
d.toLocaleString(); // ‘2014/6/24
早晨7:49:22’,本地时间(香港(Hong Kong)时区+8:00),显示的字符串与操作系统设定的格式有关
d.toUTCString(); // ‘Wed, 24 Jun 2016 11:49:22
地霉素T’,UTC时间,与本土时间相差8钟头
日子戳是个什么东西?时间戳是三个自增的整数,它代表从一九六七年三月2十二日零时整的放线菌壮观素T时区开头的那一刻,到现行反革命的皮秒数。倘诺浏览器所在电脑的时辰是纯粹的,那么世界上随便哪个时区的电脑,它们此刻发出的时刻戳数字都以同一的,所以,时间戳能够规范地球表面示一个每一日,并且与时区非亲非故。

var myDate = new Date();

时区

开头化日期时,您能够传递时区,因而日期不会被假定为UTC,然后转换为你当地的时区。

你能够经过以+
HOU帕杰罗S格式添加时区来钦赐时区,或许通过添加括在括号中的时区名称来钦命时区:

new Date(‘July 22, 2018 07:22:13 +0700’) new Date(‘July 22, 2018
07:22:13 (CET)’)

1
2
new Date(‘July 22, 2018 07:22:13 +0700’)
new Date(‘July 22, 2018 07:22:13 (CET)’)

要是在括号中钦定了错误的时区名称,则JavaScript将暗许为UTC而不会报错。

一经您钦定了错误的数字格式,JavaScript将报“无效日期”的错误。

故此,大家只要求传递时间戳,或然把时间戳从数据库里读出来,再让JavaScript自动转换为地点时间就能够了。
if (Date.now) {
alert(Date.now()); // 老版本IE没有now()方法
} else {
alert(new Date().getTime());
}

日期转换和格式设置

给定Date对象,有诸多措施将从该日期生成一个字符串:

const date = new Date(‘July 22, 2018 07:22:13’) date.toString() // “Sun
Jul 22 2018 07:22:13 GMT+0200 (Central European Summer Time)”
date.toTimeString() //”07:22:13 GMT+0200 (Central European Summer Time)”
date.toUTCString() //”Sun, 22 Jul 2018 05:22:13 GMT” date.toDateString()
//”Sun Jul 22 2018″ date.toISOString() //”2018-07-22T05:22:13.000Z” (ISO
8601 format) date.toLocaleString() //”22/07/2018, 07:22:13″
date.toLocaleTimeString() //”07:22:13″ date.getTime() //1532236933000
date.getTime() //1532236933000

1
2
3
4
5
6
7
8
9
10
11
const date = new Date(‘July 22, 2018 07:22:13’)
 
date.toString() // "Sun Jul 22 2018 07:22:13 GMT+0200 (Central European Summer Time)"
date.toTimeString() //"07:22:13 GMT+0200 (Central European Summer Time)"
date.toUTCString() //"Sun, 22 Jul 2018 05:22:13 GMT"
date.toDateString() //"Sun Jul 22 2018"
date.toISOString() //"2018-07-22T05:22:13.000Z" (ISO 8601 format)
date.toLocaleString() //"22/07/2018, 07:22:13"
date.toLocaleTimeString()    //"07:22:13"
date.getTime() //1532236933000
date.getTime() //1532236933000

复制代码 代码如下:

Date对象的getter方法

Date对象提供了两种检查其值的主意。这几个都在于总括机的当下时区:

const date = new Date(‘July 22, 2018 07:22:13’) date.getDate() //22
date.getDay() //0 (0 means sunday, 1 means monday..) date.getFullYear()
//2018 date.getMonth() //6 (starts from 0) date.getHours() //7
date.getMinutes() //22 date.getSeconds() //13 date.getMilliseconds() //0
(not specified) date.getTime() //1532236933000 date.getTimezoneOffset()
//-120 (will vary depending on where you are and when you check – this
is CET during the summer). Returns the timezone difference expressed in
minutes

1
2
3
4
5
6
7
8
9
10
11
12
const date = new Date(‘July 22, 2018 07:22:13’)
 
date.getDate() //22
date.getDay() //0 (0 means sunday, 1 means monday..)
date.getFullYear() //2018
date.getMonth() //6 (starts from 0)
date.getHours() //7
date.getMinutes() //22
date.getSeconds() //13
date.getMilliseconds() //0 (not specified)
date.getTime() //1532236933000
date.getTimezoneOffset() //-120 (will vary depending on where you are and when you check – this is CET during the summer). Returns the timezone difference expressed in minutes

这么些措施有同样的UTC版本,它们再次来到UTC值而不是顺应您当前时区的值:

date.getUTCDate() //22 date.getUTCDay() //0 (0 means sunday, 1 means
monday..) date.getUTCFullYear() //2018 date.getUTCMonth() //6 (starts
from 0) date.getUTCHours() //5 (not 7 like above) date.getUTCMinutes()
//22 date.getUTCSeconds() //13 date.getUTCMilliseconds() //0 (not
specified)

1
2
3
4
5
6
7
8
date.getUTCDate() //22
date.getUTCDay() //0 (0 means sunday, 1 means monday..)
date.getUTCFullYear() //2018
date.getUTCMonth() //6 (starts from 0)
date.getUTCHours() //5 (not 7 like above)
date.getUTCMinutes() //22
date.getUTCSeconds() //13
date.getUTCMilliseconds() //0 (not specified)

var myDate = new Date(“July 21, 一九八一01:15:00”);//此种方法为自定义日期时间的点子,格式若不对的话为提示Invalid
Date
Date对象的constructor属性为:Date
document.write(myDate.constructor == Date);//输出true

编纂日期

Date对象提供了两种编辑日期值的艺术:

const date = new Date(‘July 22, 2018 07:22:13’) date.setDate(newValue)
date.setDay(newValue) date.setFullYear(newValue) //note: avoid
setYear(), it’s deprecated date.setMonth(newValue)
date.setHours(newValue) date.setMinutes(newValue)
date.setSeconds(newValue) date.setMilliseconds(newValue)
date.setTime(newValue) date.setTimezoneOffset(newValue)

1
2
3
4
5
6
7
8
9
10
11
12
const date = new Date(‘July 22, 2018 07:22:13’)
 
date.setDate(newValue)
date.setDay(newValue)
date.setFullYear(newValue) //note: avoid setYear(), it’s deprecated
date.setMonth(newValue)
date.setHours(newValue)
date.setMinutes(newValue)
date.setSeconds(newValue)
date.setMilliseconds(newValue)
date.setTime(newValue)
date.setTimezoneOffset(newValue)

setDay和setMonth从0起始编号,由此例如March是10月。

你能够在setHours()中添加八个参数来设置分钟,秒和阿秒:setHours(0,0,0,0)
– 那等同适用于setMinutes和setSeconds。

至于get_,set_格局也有UTC等价物:

const date = new Date(‘July 22, 2018 07:22:13’) date.setUTCDate(newalue)
date.setUTCDay(newValue) date.setUTCFullYear(newValue)
date.setUTCMonth(newValue) date.setUTCHours(newValue)
date.setUTCMinutes(newValue) date.setUTCSeconds(newValue)
date.setUTCMilliseconds(newValue)

1
2
3
4
5
6
7
8
9
10
const date = new Date(‘July 22, 2018 07:22:13’)
 
date.setUTCDate(newalue)
date.setUTCDay(newValue)
date.setUTCFullYear(newValue)
date.setUTCMonth(newValue)
date.setUTCHours(newValue)
date.setUTCMinutes(newValue)
date.setUTCSeconds(newValue)
date.setUTCMilliseconds(newValue)

② 、Date()方法,重返明日的日期和时间,格式是固定格式:

获取当前时光戳

一经要以皮秒为单位得到当前时刻戳,能够应用速记

Date.now()

1
Date.now()

代替

new Date().getTime()

1
new Date().getTime()

复制代码 代码如下:

JavaScript 关于日期的容错处理

请留心。就算你使用天数总计当先3个月,则不会冒出谬误,日期将转到下个月:

new Date(2018, 6, 40) //Thu Aug 09 2018 00:00:00 GMT+0200 (Central
European Summer Time)

1
new Date(2018, 6, 40) //Thu Aug 09 2018 00:00:00 GMT+0200 (Central European Summer Time)

数月,时辰,分钟,秒和微秒都以如此。

document.write(Date());//Date()属于Javascript的放手对象,可以一贯使用

据说区域安装格式化日期

现代浏览器中的帮忙美好国际化API(值得注意的分歧:UC浏览器)允许你翻译日期。

它是由Intl Object 暴流露来的,那也有助于本地化数字,字符串。

自家来探视Intl.DateTimeFormat()。

以下是什么样采用它。

基于总括机暗中认可区域安装格式化日期:

// “12/22/2017″ const date = new Date(‘July 22, 2018 07:22:13’) new
Intl.DateTimeFormat().format(date) //”22/07/2018” in my locale

1
2
3
// "12/22/2017"
const date = new Date(‘July 22, 2018 07:22:13’)
new Intl.DateTimeFormat().format(date) //"22/07/2018" in my locale

依照分歧的区域设置格式化日期:

new Intl.DateTimeFormat(‘en-US’).format(date) //”7/22/2018″
Intl.Date提姆eFormat方法运用可选参数,允许你自定义输出突显刻钟,分钟和秒:
const options = { year: ‘numeric’, month: ‘numeric’, day: ‘numeric’,
hour: ‘numeric’, minute: ‘numeric’, second: ‘numeric’ } new
Intl.DateTimeFormat(‘en-US’, options).format(date) //”7/22/2018, 7:22:13
AM” new Intl.DateTimeFormat(‘it-IT’, options2).format(date)
//”22/7/2018, 07:22:13″

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
new Intl.DateTimeFormat(‘en-US’).format(date) //"7/22/2018"
 
Intl.DateTimeFormat方法采用可选参数,允许您自定义输出显示小时,分钟和秒:
 
const options = {
  year: ‘numeric’,
  month: ‘numeric’,
  day: ‘numeric’,
  hour: ‘numeric’,
  minute: ‘numeric’,
  second: ‘numeric’
}
 
new Intl.DateTimeFormat(‘en-US’, options).format(date) //"7/22/2018, 7:22:13 AM"
new Intl.DateTimeFormat(‘it-IT’, options2).format(date) //"22/7/2018, 07:22:13"

此处是你能够运用的富有属性的参考。

输出:
Fri Oct 26 2012 10:15:22 GMT+0800
格式: 星期 月份 日期 年份 时间 时区

比较八个日子

您能够应用Date.getTime()总结多少个日子之间的距离:

const date1 = new Date(‘July 10, 2018 07:22:13’) const date2 = new
Date(‘July 22, 2018 07:22:13’) const diff = date2.getTime() –
date1.getTime() //difference in milliseconds

1
2
3
const date1 = new Date(‘July 10, 2018 07:22:13’)
const date2 = new Date(‘July 22, 2018 07:22:13’)
const diff = date2.getTime() – date1.getTime() //difference in milliseconds

以同一的情势,您可以检查三个日子是不是等于:

const date1 = new Date(‘July 10, 2018 07:22:13’) const date2 = new
Date(‘July 10, 2018 07:22:13’) if (date2.getTime() === date1.getTime())
{ //dates are equal }

1
2
3
4
5
const date1 = new Date(‘July 10, 2018 07:22:13’)
const date2 = new Date(‘July 10, 2018 07:22:13’)
if (date2.getTime() === date1.getTime()) {
  //dates are equal
}

请牢记,getTime()重返的纳秒数,因而你须求在可比初级中学毕业生升学考试虑时间因素。二零一八年7月10日07:22:13
不对等二零一八年十一月7日。在那种情景下,您能够行使setHours(0,0,0,0)重置时间。

1 赞 收藏
评论

澳门葡京 2

另:假若自定义三个Date()对象,重临结果是同一的

复制代码 代码如下:

var myDate = new Date();
document.write(myDate);

Fri Oct 26 2012 10:17:09 GMT+0800

注:两者分别的地点在于:
前端只好展现当前的年月,而不能够轻易定义时间
例,document.write(Date(“July 21, 1983 01:15:00”));
它显得的时刻还是是近来的时刻:Fri Oct 26 二〇一三 10:15:22 阿奇霉素T+0800

叁 、getDate()方法重临月份的某一天

月份中的某一天指的是使用当地时间,其重回值是 1 ~ 31 之间的一个整数。

复制代码 代码如下:

var myDate = new Date();
document.write(myDate.getDate());

输出:26

复制代码 代码如下:

var myDate = new Date(“July 21, 1983 01:15:00”);
document.write(myDate.getDate());

输出:21

④ 、getDay() 方法可重返表示星期的某一天的数字,它的取值范围:0–6

复制代码 代码如下:

var myDate = new Date(“July 21, 1983 01:15:00”);
document.write(mtDate.getDay());

输出4

为此大家能够利用Date对象和Array对象结合的办法将时刻人性化显示出来,上面那种方法十一分常用

复制代码 代码如下:

var weekday = new Array(7);
weekday[0]=”Sunday”;
weekday[1]=”Monday”;
weekday[2]=”Tuesday”;
weekday[3]=”Wednesday”;
weekday[4]=”Thursday”;
weekday[5]=”Friday”;
weekday[6]=”Saturday”;
var myDate = new Date();
document.write(weekday[myDate.getDay()]);

伍 、getMonth(),重临月份字段,重返值是 0(6月) 到 11(十1月)
之间的2个平头

和getDay()类似,大家也运用与Array对象相结合的办法

复制代码 代码如下:

var d=new Date();
var month=new Array(12);
month[0]=”January”;
month[1]=”February”;
month[澳门葡京,2]=”March”;
month[3]=”April”;
month[4]=”May”;
month[5]=”June”;
month[6]=”July”;
month[7]=”August”;
month[8]=”September”;
month[9]=”October”;
month[10]=”November”;
month[11]=”December”;
document.write(“The month is ” + month[d.getMonth()]);

陆 、getFullYear() 方法可回到二个意味年份的 4 位数字。

再次来到值是三个3个人数,表示包蕴世纪值在内的完全年份,而不是两位数的缩写方式。

复制代码 代码如下:

var d = new Date();
document.write(d.getFullYear());

输出:
2012

复制代码 代码如下:

var born = new Date(“July 21, 1983 01:15:00”);
document.write(“I was born in ” + born.getFullYear());

输出:
1983

经过上述措施三种艺术结合大家就能够汲取相比人性化的年月突显,例:

复制代码 代码如下:

var weekday = new Array(7);
weekday[0]=”Sunday”
weekday[1]=”Monday”
weekday[2]=”Tuesday”
weekday[3]=”Wednesday”
weekday[4]=”Thursday”
weekday[5]=”Friday”
weekday[6]=”Saturday”
var month=new Array(12);
month[0]=”January”;
month[1]=”February”;
month[2]=”March”;
month[3]=”April”;
month[4]=”May”;
month[5]=”June”;
month[6]=”July”;
month[7]=”August”;
month[8]=”September”;
month[9]=”October”;
month[10]=”November”;
month[11]=”December”;
var myDate = new Date();
document.write(“Date is “+myDate.getFullYear()+”
“+month[myDate.getMonth()]+” “+myDate.getDate()+”
“+weekday[myDate.getDay()]);

输出为:
Date is 2012 October 19 Friday

七 、getHours() 方法可回到时间的钟点字段,重返值是 0 (下午) 到 23
(深夜 11 点)之间的八个平头。

复制代码 代码如下:

var born = new Date(“July 21, 1983 01:15:00”);
document.write(born.getHours());

输出:1
诠释:由 getHours() 再次来到的值是一个两位的数字。
不过重返值不总是两位的,要是该值小于 10,则仅再次来到壹人数字。

八 、getMinutes() 方法可再次回到时间的分钟字段,重回值是 0 ~ 59
之间的一个平头。

与上述办法类似,再次来到值不一连两位的,倘诺该值小于 10,则仅再次来到壹人数字。

玖 、getSeconds() 方法可再次来到时间的秒,重回值是 0 ~ 59 之间的2个整数。

与上述模式类似,重返值不总是两位的,假使该值小于 10,则仅重临一位数字。

十 、getMilliseconds()
方法可重回时间的微秒,阿秒字段,以本土时间展现。重回值是 0 ~ 999
之间的3个平头。

注明:由 getMilliseconds()
重临的值是二个多少人的数字。

然则再次来到值不接二连三3位的,如若该值小于 100,则仅重返两位数字,即便该值小于
10,则仅再次回到壹位数字。
下边咱们有两种方法将时间展现出来:
—>方式一

复制代码 代码如下:

var d = new Date();
document.write(‘Time is
‘+d.getHours()+”:”+d.getMinutes()+”:”+d.getSeconds());

出口:Time is
10:52:2,缺点很强烈,在秒为<10的情事下只突显了一人,别的的也接近,由此推荐第两种展现方式

—>方式二

复制代码 代码如下:

function checktime(time)
{
    if(time<10)
    {
      time = ‘0’+time;
    }
    return time;
}
var d = new Date();
document.write(‘Time is
‘+checktime(d.getHours())+”:”+checktime(d.getMinutes())+”:”+checktime(d.getSeconds()));

输出:Time is 10:55:02

1一 、get提姆e() 方法可回到本地时间距 一九七〇 年 1 月 10日里边的纳秒数,由此得以自定义Date(“Jul 26 三千”);

复制代码 代码如下:

var d = new Date();
document.write(d.getTime() + ” milliseconds since 1970/01/01″);

输出:1350615452813 milliseconds since 1970/01/01

之所以大家能够依照此数获得当地时间相差1966/01/01的年数

复制代码 代码如下:

var minutes = 1000*60;//一秒钟有60秒,一秒有60皮秒,上边依次类推
var hours = minutes*60;
var days = hours*24;
var years = days*365;
var d = new Date();
var t = d.getTime();//获得距离1970/01/01的微秒数
var y = t/years;
document.write(“It’s been: ” + y + ” years since 1970/01/01!”);

输出:
It’s been: 42.82773990521943 years since 1970/01/01!
注:此时的年度是八个小数,能够将其换来整数(其实Javascript中尚无整数的差距)

末尾一行修改为:

复制代码 代码如下:

document.write(“It’s been: ” + parseInt(y) + ” years since
1970/01/01!”);

输出:
It’s been: 42 years since 1970/01/01!
parseInt(float);能够将浮点类型转换为整型

1贰 、getTimezoneOffset()
方法可重临格林威治时间和本地时间里面包车型客车时差,以分钟为单位。

注:
getTimezoneOffset() 方法重临的是地面时间与 丙胺搏来霉素T 时间或 UTC
时间之间相差的分钟数。
骨子里,该函数告诉大家运维 JavaScript
代码的时区,以及钦定的小时是不是是夏令时。
回来之所以以分钟计,而不是以时辰计,原因是有个别国家所占有的时区甚至不到二个小时的间隔。

复制代码 代码如下:

var d = new Date();
document.write(d.getTimezoneOffset());

输出:
-480(东八区,8*60)

为此得以根据此办法来判定所在时区

复制代码 代码如下:

function checkzone(zone)
{
    if (zone==0)
    {
        return “零时区”;
    }
    else if (zone>0)
    {
    return “西”+parseInt(zone/60)+”区”;
    }
    else
    {
    return “东”+parseInt(Math.abs(zone/60))+”区”;
    }
}
var d = new Date();
document.write(checkzone(d.getTimezoneOffset()));

其间Math.abs()为求相对值
上述措施是团结原创,因为地法学的不好,不知晓对不对,求指正

1③ 、parse() 方法可分析三个日期时间字符串,并回到 一九七〇/1/1
早上离开该日期时间的飞秒数。

parse(str);str为字符串,是四个合乎时间格式的字符串

复制代码 代码如下:

var minutes = 1000 * 60;
var hours = minutes * 60;
var days = hours * 24;
var years = days * 365;
var t = Date.parse(“Jul 8, 2005”);
var y = t/years;
document.write(“It’s been: ” + parseInt(y) + ” years from
1970/01/01″);
document.write(” to 2005/07/08!”);

输出为:
It’s been: 35 years from 1970/01/01 to 2005/07/08!

1四 、setDate() 方法用于安装2个月的某一天。

setDate(day),day必需。表示1个月尾的一天的三个数值(1 ~ 31)。
注,此方法是在本来对象的基本功上开始展览改动,会变动原来数据的值
例:

复制代码 代码如下:

var d = new Date();
document.write(d.getDate()+”<br>”);
d.setDate(31);
document.write(d.getDate());

输出:
19
31

1五 、setMonth()
方法用于安装月份,与setDate()使用办法平昔,也会变动原Date对象

setMonth(month,day),方今可能不协助第三个参数,month必需。三个意味着月份的数值,该值介于
0(二月) ~ 11(十二月) 之间。
假如扶助day参数的话,day代表的是月初某一天的数值,介于 1 ~ 31
之间。用地方时间代表。

复制代码 代码如下:

var d = new Date();
document.write(d.getMonth()+” “+d.getDate()+”<br>”);
d.setMonth(11,26);
document.write(d.getMonth()+” “+d.getDate());

输出为:
9 19
11 26

1⑥ 、setFullYear() 方法用于安装年度。

setFullYear(year,month,day);
year 必需。表示年份的4位整数。用本地时间代表。
month 可选。表示月份的数值,介于 0 ~ 11 之间。用地点时间代表。
day 可选。表示月底某一天的数值,介于 1 ~ 31 之间。用当地时间代表。

复制代码 代码如下:

var d = new Date();
d.setFullYear(1992,10,3);
document.write(d);

输出为:
Tue Nov 03 1992 11:31:58 GMT+0800

1柒 、setHours() 方法用于安装内定的时日的小时字段。

setHours(hour,min,sec,millisec);
hour 必需。表示小时的数值,介于 0(上午) ~ 23(中午11点)
之间,以当地时间计(下同)。
min 可选。表示分钟的数值,介于 0 ~ 59 之间。在 EMCAScript
标准化在此以前,不扶助该参数。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 EMCAScript
标准化此前,不帮助该参数。
millisec 可选。表示纳秒的数值,介于 0 ~ 999以内。在 EMCAScript
标准化在此以前,不援救该参数。

复制代码 代码如下:

var d = new Date()
d.setHours(15,35,1)
document.write(d)

输出为:
Fri Oct 19 15:35:01 UTC+0800 2012

1⑧ 、setMinutes() 方法用于安装钦命时间的分钟字段。

setMinutes(min,sec,millisec)
min 必需。表示分钟的数值,介于 0 ~ 59 之间,以本土时间计(下同)。
sec 可选。表示秒的数值,介于 0 ~ 59 之间。在 EMCAScript
标准化以前,不帮助该参数。
millisec 可选。表示飞秒的数值,介于 0 ~ 999 之间。在 EMCAScript
标准化此前,不补助该参数。

复制代码 代码如下:

var d = new Date()
d.setMinutes(1)
document.write(d)

输出为:
Fri Oct 19 11:01:11 UTC+0800 2012

1⑨ 、setSeconds() 方法用于安装钦命时间的秒字段。

setSeconds(sec,millisec)
sec 必需。表示秒的数值,该值是介于 0 ~ 59 之间的整数。
millisec 可选。表示阿秒的数值,介于 0 ~ 999 之间。在 EMCAScript
标准化以前,不帮衬该参数。

20、setMilliseconds() 方法用于安装钦定时间的皮秒字段。

setMilliseconds(millisec)
millisec 必需。用于安装 dateObject 阿秒字段,该参数是在乎 0 ~ 999
之间的整数。

2① 、setTime() 方法以皮秒设置 Date 对象。

此办法是比较常用的方法,在数据库中存放Date.get提姆e()阿秒数,
在回来时怎么着体现出来呢,便是用此措施
setTime(millisec)
millisec 必需。要安装的日子和岁月据 丙胺搏来霉素T 时间 一九九八 年 1 月 二十六日早上里面包车型地铁阿秒数。
这体系型的阿秒值可以传递给 Date() 构造函数,能够由此调用 Date.UTC() 和
Date.parse() 方法取得该值。以飞秒格局表示日期能够使它独立于时区。

复制代码 代码如下:

var d = new Date();
d.setTime(77771564221);
document.write(d);

输出为:
Mon Jun 19 1972 11:12:44 GMT+0800
此种方法就足以依据数据库中存放的long数据类型将其更换为了时刻对象

2二 、toTimeString() 方法可把 Date
对象的日子有个别更换为字符串,并赶回结果。

复制代码 代码如下:

var d = new Date();
document.write(d.toTimeString());

输出:
11:50:57 GMT+0800

2叁 、toDateString() 方法可把 Date
对象的日子部分更换为字符串,并赶回结果。

复制代码 代码如下:

var d = new Date();
document.write(d.toDateString());

输出:
Fri Oct 19 2012

2④ 、还有许多陈设UTC时区的一些办法,此处没有列出,仅仅是对一般的通用较多的法门汇总了下

翻看越来越多JavaScript的语法,我们能够关怀:《JavaScript
参考教程》、《JavaScript代码风格指南》,也指望大家多多支持脚本之家。

您大概感兴趣的篇章:

  • JavaScript Date对象详解
  • javascript中Date对象的利用计算
  • JavaScript
    Date对象使用计算
  • javascript中Date对象应用之大概日历实现
  • 原生JS:Date对象周到剖析
  • javascript
    玩转Date对象(实例讲解)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website