0%

javascript的日期对象,Date

Date对象是javascript提供的日期和时间的操作接口,可以表示的时间范围是1970年1月1日00:00:00前后各1亿天(单位毫秒)。

Data函数

Date对象可以直接调用,返回一个代表当前时间的字符串(即使带有参数,也返回当前的时间)

1
2
Date()
// "Wed Aug 23 2017 11:13:34 GMT+0800 (CST)"

注意:返回的是字符串

Data构造函数

Data当做构造函数使用,没有参数的时候,返回当前时间的对象。

1
2
new Date();
// Wed Aug 23 2017 11:16:17 GMT+0800 (CST)

注意:返回的是Date对象。
###1. new Date(millisconds)
Date对象接收毫秒数作为参数,意味着Unix时间戳作为参数时,必须将Unix时间戳乘以1000。

1
2
new Date(24*60*60*1000);
// Fri Jan 02 1970 08:00:00 GMT+0800 (CST)

毫秒数表示的时间为1970年1月1日00:00:00 UTC开始计算的毫秒,如果需要表示1970年之前的时间,需要毫秒数为负数就可以了。

1
2
new Date(-24*60*60*1000);
// Wed Dec 31 1969 08:00:00 GMT+0800 (CST)

###2. new Date(datestring)
Date对象接受日期字符串作为参数,返回对应的时间。日期字符串的完整格式为:“month day, year hours:minutes:seconds”,如果省略小时、分钟、秒数,这些值会被设为0。其他的日期字符串也可以被解析,所有可以被Date.parse()方法解析的日期字符串,都可以当做Date对象的参数。

1
2
3
4
new Date('2013-2-15');
// Fri Feb 15 2013 00:00:00 GMT+0800 (CST)
new Date('02/15/2013');
// Fri Feb 15 2013 00:00:00 GMT+0800 (CST)

对于YYYY-MM-DD形式的字符串,JavaScript引擎可能会将其当做ISO格式来解析,采用格林尼治时区作为计时标准;而对于其他格式的日期字符串,一律视为非ISO格式,采用本地时区作为计时标准。

1
2
3
4
new Date('2017-1-1');
// Sun Jan 01 2017 00:00:00 GMT+0800 (CST)
new Date('2017-01-01');
// Sun Jan 01 2017 08:00:00 GMT+0800 (CST)

###3. new Date(year, month[, day, hours, minutes, seconds, ms])
Date对象还可以接受多个整数作为参数,依次表示年、月、日、时、分、秒、毫秒。采用这种格式的时候,需要至少提供两个参数年和月,其他参数都是可选的,默认为0,因为如果传递单个整数,Date对象会解释为毫秒数。

1
2
3
4
new Date(2017, 1, 1)
// Wed Feb 01 2017 00:00:00 GMT+0800 (CST)
new Date(2017, -1, 1)
// Thu Dec 01 2016 00:00:00 GMT+0800 (CST)

注意:月份是从0开始计算,十二月对应11,但是天数是从1开始计算的,另外,除了日期默认为1,时分秒、毫秒都是默认为0的。如果参数超出了范围,就自动这算为下月的,负数的参数表示扣去的时间

Date对象静态方法

1. Date.now()

该方法返回当前时间的毫秒数

1
2
Date.now();
// 1503460058908

###2. Date.parse()
用来解析日期字符串。返回毫秒数。无法解析时返回NaN

1
2
3
4
5
6
7
8
Date.parse('2017/3/3')
// 1488470400000
Date.parse('2017')
// 1483228800000
Date.parse(2017)
// 1483228800000
Date.parse('2017/3')
// 1488297600000

###3. Date.UTC()
返回UTC时间(世界标准时间),该方法接收年月日等变量作为参数,返回时间戳。
##Date实例对象的方法

1. to类方法

to类方法从Date对象返回一个字符串,表示指定的时间。

(1)Date.prototype.toString()

toString方法返回一个完整的日期字符串。

1
2
3
var d = new Date();
d.toString();
// "Wed Aug 23 2017 14:13:15 GMT+0800 (CST)"

注意:toString是默认的调用方法,所以如果直接读取Data对象的实例,就相当于调用这个方法。
####(2)Date.prototype.toUTCString()
toUTCString方法返回对应的UTC时间(国际标准时间),比北京时间少八小时。

1
2
d.toUTCString();
// "Wed, 23 Aug 2017 06:17:50 GMT"

####(3)Date.prototype.toISOString()
toISOString方法返回对应时间的ISO8601写法。该方法返回的时间总是UTC时区的时间。

1
2
d.toISOString();
// "2017-08-23T06:17:50.382Z"

####(4)Date.prototype.toJSON()
toJSON方法返回一个符合JSON格式的ISO格式的日期字符串,与toISOString方法返回的结果完全相同。

1
2
d.toJSON();
// "2017-08-23T06:17:50.382Z"

####(5)Date.prototype.toDateString()和Date.prototype.toTimeString()
toDateString方法返回日期字符串。toTimeString方法返回时间字符串。

1
2
3
4
d.toDateString();
// "Wed Aug 23 2017"
d.toTimeString();
// "14:17:50 GMT+0800 (CST)"

####(6)Date.prototype.toLocaleDateString()和Date.prototype.toLocaleTimeString()
toLocaleDateString方法返回一个代表日期的当地写法的字符串。
toLocaleTimeString方法返回一个代表时间的当地写法。

1
2
3
4
d.toLocaleDateString();
// "2017/8/23"
d.toLocaleTimeString();
// "下午2:17:50"

###2.get类方法
Date对象提供了一系列get方法,用来获取实例对象的某个方面的值。

  • getTime():返回Date实例的时间戳毫秒数,等同于valueOf
  • getDate():返回实例对象对应的每个月几号(从1开始)
  • getDay():返回星期几,星期日为0,星期一为1。
  • getYear():返回距离1900的年数。
  • getFullYear():返回四位数的年份。
  • getMonth():返回月份(0表示1月,11表示12月)。
  • getHour():返回小时(0-23)。
  • getMilliseconds():返回毫秒(0-999)。
  • getMinutes():返回分钟(0-59)。
  • getSeconds():返回秒数(0-59)。
  • getTimezoneOffset():返回当前时间与UTC的时区差异,以分钟表示,返回结果考虑到了夏令时因素。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    d.getTime();
    // 1503470410028
    d.getDate();
    // 23
    d.getDay();
    // 3
    d.getYear();
    // 117
    d.getFullYear();
    // 2017
    d.getTimezoneOffset();
    // -480
    ###3.set类方法
    Date对象提供了一系列的set方法,用来设置实例对象的各个方面。
  • setDate(date):设置实例对象对应的每个月的几号(1-31),返回改变后毫秒时间戳。
  • setYear(year): 设置距离1900年的年数。
  • setFullYear(year [, month, date]):设置四位年份。
  • setHours(hour [, min, sec, ms]):设置小时(0-23)。
  • setMilliseconds():设置毫秒(0-999)。
  • setMinutes(min [, sec, ms]):设置分钟(0-59)。
  • setMonth(month [, date]):设置月份(0-11)。
  • setSeconds(sec [, ms]):设置秒(0-59)。
  • setTime(milliseconds):设置毫秒时间戳。

set方法基本是和get方法对应的,但是set方法没有setDay,因为星期几是计算出来的,不能设置。
注意:凡涉及到设置月份的,都是从0开始计算的,即0是1月,11是12月

实例

简单的获取特定格式的时间:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function dateFormat(){
var date = new Date();
var y = date.getFullYear();
var m = date.getMonth() + 1;
var d = date.getDate();
var h = date.getHours();
var mi = date.getMinutes();
var s = date.getSeconds();
if (mi < 10) {
mi = '0' + mi;
}
return y + '-' + m + '-' + d + ' ' + h + ':' + mi;
}
console.log(dateFormat()); // 2017-8-23 15:09
码字辛苦,打赏个咖啡☕️可好?💘