在JavaScript中,日期和时间由Date
对象表示。 Date
对象提供日期和时间信息,还提供各种方法。
JavaScript日期定义了EcmaScript时期 ,代表从UTC 1970年1月1日起的毫秒数。此日期和时间与UNIX时期相同(计算机记录的日期和时间值的主要基础值)。
创建日期对象
有四种创建日期对象的方法。
- 新的Date()
- 新日期(毫秒)
- 新日期(日期字符串)
- 新日期(年,月,日,小时,分钟,秒,毫秒)
新的Date()
您可以使用new Date()
构造函数创建日期对象。例如,
let timeNow = new Date();
console.log(timeNow); // shows current date and time
输出
Mon Jul 06 2020 12:03:49 GMT+0545 (Nepal Time)
在这里, new Date()
使用当前日期和本地时间创建一个新的日期对象。
新日期(毫秒)
Date
对象包含一个数字,该数字表示自1970年1月1日UTC以来的毫秒数。
new Date(milliseconds)
通过将毫秒添加到零时间来创建一个新的date对象。例如,
let time1 = new Date(0);
// epoch time
console.log(time1); // Thu Jan 01 1970 05:30:00
// 100000000000 milliseconds after the epoch time
let time2 = new Date(100000000000)
console.log(time2); // Sat Mar 03 1973 15:16:40
注意 :1000毫秒等于1秒。
新日期(日期字符串)
new Date(date string)
从date 字符串创建一个新的date对象。
在JavaScript中,通常有三种日期输入格式。
ISO日期格式
您可以通过传递ISO日期格式来创建日期对象。例如,
// ISO Date(International Standard)
let date = new Date("2020-07-01");
// the result date will be according to UTC
console.log(date); // Wed Jul 01 2020 05:45:00 GMT+0545
您也只能通过年份和月份或仅通过年份。例如,
let date = new Date("2020-07");
console.log(date); // Wed Jul 01 2020 05:45:00 GMT+0545
let date1 = new Date("2020");
console.log(date1); // Wed Jul 01 2020 05:45:00 GMT+0545
您还可以将特定时间传递给ISO日期。
let date = new Date("2020-07-01T12:00:00Z");
console.log(date); // Wed Jul 01 2020 17:45:00 GMT+0545
注意 :日期和时间用大写字母T分隔。 UTC时间用大写Z定义。
短日期和长日期格式
其他两种日期格式是短日期 格式和长日期 格式 。
// short date format "MM/DD/YYYY"
let date = new Date("03/25/2015");
console.log(date); // Wed Mar 25 2015 00:00:00 GMT+0545
// long date format "MMM DD YYYY"
let date1 = new Date("Jul 1 2020");
console.log(date1); // Wed Jul 01 2020 00:00:00 GMT+0545
// month and day can be in any order
let date2 = new Date("1 Jul 2020");
console.log(date2); // Wed Jul 01 2020 00:00:00 GMT+0545
// month can be full or abbreviated. Also month names are insensitive.
// comma are ignored
let date3 = new Date("July 1 2020");
console.log(date3); // Wed Jul 01 2020 00:00:00 GMT+0545
let date4 = new Date("JULY, 1, 2020");
console.log(date4); // Wed Jul 01 2020 00:00:00
新日期(年,月,日,小时,分钟,秒,毫秒)
new Date(year, month,...)
通过传递特定的日期和时间来创建新的日期对象。例如,
let time1 = new Date(2020, 1, 20, 4, 12, 11, 0);
console.log(time1); // Thu Feb 20 2020 04:12:11
传递的参数具有特定顺序。
如果传递了四个数字,则代表年,月,日和小时。例如,
let time1 = new Date(2020, 1, 20, 4);
console.log(time1); // Thu Feb 20 2020 04:00:00
同样,如果传递了两个参数,则表示年份和月份。例如,
let time1 = new Date(2020, 1);
console.log(time1); // Sat Feb 01 2020 00:00:00
注意 :如果仅传递一个参数,则将其视为毫秒。因此,您必须传递两个参数才能使用此日期格式。
在JavaScript中,月份从0到11进行计数。一月是0 ,十二月是11 。
JavaScript日期方法
JavaScript Date对象中提供了多种方法。
Method | Description |
---|---|
now() | Returns the numeric value corresponding to the current time(the number of milliseconds elapsed since January 1, 1970 00:00:00 UTC) |
getFullYear() | Gets the year according to local time |
getMonth() | Gets the month, from 0 to 11 according to local time |
getDate() | Gets the day of the month(1–31) according to local time |
getDay() | Gets the day of the week(0-6) according to local time |
getHours() | Gets the hour from 0 to 23 according to local time |
getMinutes | Gets the minute from 0 to 59 according to local time |
getUTCDate() | Gets the day of the month(1–31) according to universal time |
setFullYear() | Sets the full year according to local time |
setMonth() | Sets the month according to local time |
setDate() | Sets the day of the month according to local time |
setUTCDate() | Sets the day of the month according to universal time |
示例:日期方法
let timeInMilliseconds = Date.now();
console.log(timeInMilliseconds); // 1593765214488
let time = new Date;
// get day of the month
let date = time.getDate();
console.log(date); // 30
// get day of the week
let year = time.getFullYear();
console.log(year); // 2020
let utcDate = time.getUTCDate();
console.log(utcDate); // 30
let event = new Date('Feb 19, 2020 23:15:30');
// set the date
event.setDate(15);
console.log(event.getDate()); // 15
// Only 28 days in February!
event.setDate(35);
console.log(event.getDate()); // 7
格式化日期
与其他编程语言不同,JavaScript不提供用于格式化日期的内置函数 。
但是,您可以提取单个位并像这样使用它。
let currentDate = new Date();
let date = currentDate.getDate();
let month = currentDate.getMonth();
let year = currentDate.getFullYear();
// show in specific format
let monthDateYear = (month+1) + '/' + date + '/' + year;
console.log(monthDateYear); // 7/3/2020
注意 :上面的程序给出的长度不一致,因为日期和月份分别为一位数字和两位数。
日期对象中的自动更正
当您在Date
对象中分配超出范围的值时,它会自动更正。例如,
let date = new Date(2008, 0, 33);
// Jan does not have 33 days
console.log(date);
输出
Sat Feb 02 2008
要了解有关JavaScript中日期和时间的更多信息,请访问Demystifying Date and Time。