有一些很好的图书馆在JavaScript中处理日期,其中 Moment.js和 date-fns可能是最受欢迎的两个。
创建日期对象
创建一个新的日期实例就像更新一个日期对象一样简单。
没有论点,我们在本地时区获得当前日期和时间:
1const now = new Date();
2
3console.log(now); // Wed Dec 06 2017 18:30:55 GMT-0800 (PST)
自 Unix 时代以来的千里秒
您还可以输入一个日期对象的整数,该对象是 1970 年 1 月 1 日 UTC 之后的 X 毫秒数:
1const latter = new Date(4000000000);
2
3console.log(latter); // Sun Feb 15 1970 23:06:40 GMT-0800 (PST)
日期 String
您也可以通过传输字符串来替代创建日期对象:
1const summerOf95 = new Date("1995-06-28");
2
3// or, with a full date string that also includes the time and the time zone. Note here that `Z` is for UTC timezone:
4const december31st = new Date("1999-12-31T02:56:03.392Z");
日期组件
最后,您可以使用单独的组件参数在本地时区创建日期对象:
1const someDate = new Date(2000, 5, 20, 16, 34, 12, 24);
2
3console.log(someDate); // Tue Jun 20 2000 16:34:12 GMT-0700 (PDT)
注意月份是基于零的,因此5
代表了6月。
1const someDate = new Date(2000, 5, 20, 16, null, 12, 24);
2
3console.log(someDate); // Tue Jun 20 2000 16:00:12 GMT-0700 (PDT)
<$>[警告] 如果当控制台记录日期对象时返回的日期使您感到困惑,请记住,大多数浏览器会在本地时区输出时间。
时间表
使用日期实例的 getTime 方法获取时刻印(自 1970 年 1 月 1 日 UTC 以来的毫秒数):
1const nowTimestamp = new Date().getTime();
2
3console.log(nowTimestamp); // 1512616153783
时刻表现在
在上面的例子中,我们正在获得现在
的时刻标记,这是如此普遍,以至于JavaScript现在有一个方法来更容易地获得:
1const nowTimestamp = Date.now();
2
3console.log(nowTimestamp); // 1512616153783
时间标签有助于轻松地计算两个日期之间的毫秒差异. 例如,在1996年2月3日至1970年1月1日之间,我们得到毫秒差异:
1const diff = new Date("1995-02-03").getTime() - new Date(0).getTime();
在上述情况下,您可以忽略调用到 getTime,日期将自动强制执行时刻标记:
1const diff = new Date("1995-02-03") - new Date(0);
可读的人类字符串
数据对象实例还为我们提供了一些有用的方法来获取人为友好的字符串表示。 toDateString、toTimeString、toLocaleDateString、toLocaleString、toLocaleTimeString 和toUTCString 方法是最有用的方法,并在下面的示例中展示了这些方法:
1const now = new Date();
2
3console.log(now.toDateString()); // Wed Dec 06 2017
4console.log(now.toTimeString()); // 19:23:42 GMT-0800 (PST)
5console.log(now.toLocaleDateString()); // 12/6/2017
6console.log(now.toLocaleString()); // 12/6/2017, 7:20:28 PM
7console.log(now.toLocaleTimeString()); // 7:20:51 PM
8console.log(now.toUTCString()); // Thu, 07 Dec 2017 03:21:14 GMT
获取日期或时间组件
您可以使用以下方法从日期实例中获取特定日期/时间组件:
- getFullYear():使用4位数字的年份
- getDate():月日(例如: 31)。
- getMonth():月的零基准整数(例如:1月的0)。
- getDay():周日的0日至周六的6日的指数
- getHours():一天的时间
- getMinutes():分钟
- getSeconds():秒():秒( )* getMilliseconds(): 毫秒( )
这里有一个简单的例子:
1const now = new Date();
2
3console.log(`It's ${now.getHours()}:${now.getMinutes()} o'clock`);
4// It's 19:34 O'Clock
<$>[注] 请注意,上述所有方法都返回本地时区中的日期/时间组件,每个方法都有一个等价值,以便返回UTC日期/时间(例如: getUTCMinutes())。
设置日期或时间组件
类似于我们如何获取日期和时间组件,我们也可以使用类似的方法来设置它们:
1const now = new Date();
2
3now.setFullYear(2049);
4
5console.log(now.toLocaleString()); // 12/6/2049, 7:40:04 PM
请注意,有一个捷径,其中大多数集方法可以使用多个参数来设置其他组件. 这些两个片段产生相同的结果:
1[label The tedious way]
2const now = new Date();
1[label The shortcut]
2const now = new Date();
添加/扣除时间
使用 Get 和 Set 方法的组合,您可以从日期实例的日期/时间组件中添加或扣除。
1const now = new Date();
2
3console.log(now.toLocaleTimeString()); // 7:47:53 PM
4
5now.setMinutes(now.getMinutes() + 15);
6
7console.log(now.toLocaleTimeString()); // 8:02:53 PM