说说 JavaScript Date 类型

  • Date 类型使用 UTC(Coordinated Universal Time),即 1970 年 1 月 1 日 午夜零时经过的毫秒数来保存日期。在这种格式下,日期的精度能够达到 1970 年 1 月 1 日之前或之后的 285616 年。
  • 各种创建日期对象方法:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>各种创建日期对象方法title>
head>
<body>

<script type="text/javascript">
    var now = new Date();
    console.log(now);

    var someDate=new Date(Date.parse("May 25,2016"));
    console.log(someDate);

    console.log(new Date("May 25,2016"));
script>
body>
html>
  • Date.parse() 方法接收一个表示日期的字符串参数,这个参数的格式因实现而异。如果这个参数不能表示为日期,会返回 NaN。
  • 如果直接将表示日期的字符串传递给 Date 构造函数,它也会在后台自动调用 Date.parse() 方法。

注意: 日期对象在不同浏览器中有不同的实现,有的还很奇怪,比如将超出范围的值替换为当前的值。


  • Date.UTC() 也会返回表示日期的毫秒数,它需要传入的参数是年份、月份(0-11)、天(1-31)、小时(0-23)、分钟、秒以及毫秒。这些参数中只有年和月是必须的,它们是基于 GMT 的:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>Date.UTC 函数(GMT 时间)title>
head>
<body>

<script type="text/javascript">
    console.log(new Date(Date.UTC(2000,0)));//2000-1-1 午夜零时
    console.log(new Date(Date.UTC(2017,1,16,14,46,46)));
script>
body>
html>
  • Date 构造函数也会模仿 Date.UTC(),但日期和时间都是基于本地时区的:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>基于本地时区创建时间title>
head>
<body>

<script type="text/javascript">
    console.log(new Date(2000, 0));
    console.log(new Date(2005, 4, 5, 17, 55, 55));
script>
body>
html>
  • ECMAScript 5 新增了 Date.now() 方法,返回的是毫秒数:
var start = Date.now();
doSomething();
var stop = Date.now(),
    result = stop - start;
  • 在不支持 ECMAScript 5 的浏览器中,可以使用 + 操作符把 Date 对象转换为字符串:
var start = + new Date();
doSomething();
var stop = + new Date(),
    result = stop - start;

1 继承的方法

  • Date 类型的 toLocaleString() 方法会按照浏览器设置的时区返回相应格式的日期和时间。
  • toString() 会返回带有时区信息的日期和时间。
  • 上面的这两个方法返回的具体格式因浏览器而异,所以一般仅在调试代码阶段有用,不能用来显示时间。
  • valueOf() 方法返回的是毫秒数,因此可以使用比较操作符来比较日期值,这一点非常棒:

<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>比较日期值title>
head>
<body>

<script type="text/javascript">
    var date1 = new Date(2017, 0, 1);//2017-1-1
    var date2 = new Date(2017, 1, 1);//2017-2-1
    console.log(date1 < date2);//true
    console.log(date1 > date2);//false
script>
body>
html>

2 日期格式化方法

方法名称 说明
toDateString() 特定于实现的格式显示星期几、月、日、年
toTimeString() 特定于实现的格式显示时、分、秒和时区
toLocaleDateString() 特定于时区的格式显示星期几、月、日、年
toLocaleTimeString() 特定于时区的格式显示时、分、秒
toUTCString() 特定于实现的格式显示完整的 UTC 日期

* 这些方法都是以浏览器而异的,所以对于显示日期信息没有什么用啦 O(∩_∩)O~


注意: 还有一个 toGMTString() 方法,这是与 toUTCString() 等价的方法,存在的目的是为了确保向后兼容,所以我们写代码时还是推荐使用 toUTCString() 啦 O(∩_∩)O~


3 日期/时间组件方法

方法名称 说明
getTime() 返回日期的毫秒数,与 valueOf() 的返回值相同
setTime(毫秒数) 以毫秒数设置日期
getFullYear() 取得 4 位数的年份
getUTCFullYear() 返回 UTC 日期的 4 位数的年份
setFullYear(年) 设置日期的年份(4 位数)
setUTCFullYear(年) 设置 UTC 日期的年份(4 位数)
getMonth() 返回日期中的月份(0 ~ 11)
getUTCMonth() 返回 UTC 日期中的月份(0 ~ 11),如果超过会增加年份
setMonth(月) 设置日期的月份(0 ~ 11),如果超过会增加年份
setUTCMonth(月) 设置 UTC 日期的月份(0 ~ 11)
getDate() 返回日期月份中的天数(1 ~ 31)
getUTCDate() 返回 UTC 日期月份中的天数(1 ~ 31)
setDate(日) 设置日期月份中的天数(1 ~ 31),如果超过会增加月份
setUTCDate(日) 设置 UTC 日期月份中的天数(1 ~ 31),如果超过会增加月份
getDay() 返回日期中的星期几(0:星期日;6:星期六;其他类推)
getUTCDay() 返回 UTC 日期中的星期几(0:星期日;6:星期六;其他类推)
getHours() 返回日期中的小时数(0 ~ 23)
getUTCHours() 返回 UTC 日期中的小时数(0 ~ 23)
setHours(小时) 设置日期中的小时数(0 ~ 23),如果超过会增加天数
setUTCHours(小时) 设置 UTC 日期中的小时数(0 ~ 23),如果超过会增加天数
getMinutes() 返回日期中的分钟数(0 ~ 59)
getUTCMinutes() 返回 UTC 日期中的分钟数(0 ~ 59)
setMinutes(分钟) 设置日期中的分钟数(0 ~ 59),如果超过会增加小时数
setUTCMinutes(分钟) 设置 UTC 日期中的分钟数(0 ~ 59),如果超过会增加小时数
getSeconds() 返回日期中的秒数(0 ~ 59)
getUTCSeconds() 返回 UTC 日期中的秒数(0 ~ 59)
setSeconds(秒) 设置日期中的秒数(0 ~ 59),超过会增加分钟数
setUTCSeconds(秒) 设置 UTC 日期中的秒数(0 ~ 59),超过会增加分钟数
getMilliseconds() 返回日期中的毫秒数
getUTCMilliseconds() 返回 UTC 日期中的毫秒数
setMilliseconds(毫秒) 设置日期中的毫秒数
setUTCMilliseconds(毫秒) 设置 UTC 日期中的毫秒数
getTimezoneOffset() 返回本地时间与 UTC 时间相差的分钟数

你可能感兴趣的:(JavaScript)