JavaScript日期对象使我们可以处理日期。
在JavaScript中,您可能想创建一个带有日历,火车时刻表或用于设置约会的界面的网站。
这些应用程序需要根据用户的当前时区显示对应时间。
Tue Aug 11 2020 22:34:40 GMT+0800 (中国标准时间)
Date对象是在JavaScript内置的对象存储日期和时间。
它提供了许多用于格式化和管理数据的内置方法。
日期对象是使用new Date()构造函数创建的。
let now = new Date();// 将变量设置为当前日期和时间测试看看‹/›
默认情况下,JavaScript将使用浏览器的时区并将日期显示为全文字符串。
有四种创建新日期对象的方法。
您可以使用以下任何语法使用new Date()构造函数创建Date对象。
new Date(); new Date(milliseconds); new Date(dateString); new Date(year, month, day, hours, minutes, seconds, milliseconds);
在new Date()创建与当前日期和时间新的日期对象:
let d = new Date();测试看看‹/›
new Date(milliseconds) 会创建一个新的日期对象,该对象为零时间加上毫秒:
let d = new Date(0);测试看看‹/›
JavaScript根据从Unix时间得出的时间戳来理解日期,该时间戳由1970年1月1日午夜以来经过的毫秒数组成。
1970年1月1日加上252 4600000000毫秒大约是2050年1月1日:
let d = new Date(2524600000000);测试看看‹/›
new Date(dateString) 创建了一个从日期字符串一个新的日期对象:
let d = new Date("July 30 1992 18:30");测试看看‹/›
将创建一个具有指定日期和时间新的日期对象:new Date(year, month, ...)
7个数字指定年,月,日,小时,分钟,秒和毫秒(按此顺序):
let d = new Date(2019, 0, 26, 10, 40, 30, 0);测试看看‹/›
在上面的示例中,我们的秒和毫秒设置为30和0。
如果创建日期缺少任何数字,则默认为0。
但是,顺序不能更改,因此,如果您决定省略一个数字,请记住这一点。
您可能还会注意到,一月的月份用0表示,而不是通常的1。
这是因为日期和时间数字从0开始,就像编程中的大多数计数一样。
JavaScript的月份从0到11。一月是0,十二月是11。
创建Date对象时,可以使用多种方法对其进行操作。
使用日期方法,您可以使用本地时间或UTC(通用或GMT)时间来获取和设置日期,年,月,日,时,分,秒和毫秒。
有了对象日期后,就可以使用各种内置方法访问日期的所有组件。
这些方法将返回相对于当地时区的日期的每个部分。
这些方法中的每一个都以get开头,并将返回相对编号。
下表是Date对象的get方法的表:
方法 | Date/Time | 范围(Range) |
---|---|---|
getFullYear() | 年 | 根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字:YYYY)。 |
getMonth() | 月 | 根据本地时间返回指定日期对象的月份(0-11),(0=一月)。 |
getDate() | 第几天(当月) | 根据本地时间返回指定日期对象的月份中的第几天(1-31)。 |
getDay() | 一周中的第几天 | 根据本地时间返回指定日期对象的一周中的第几天(0-6),(0 =星期日)。 |
getHours() | 小时 | 根据本地时间返回指定日期对象的小时(0-23)。 |
getMinutes() | 分钟 | 根据本地时间返回指定日期对象的分钟(0-59)。 |
getSeconds() | 秒 | 根据本地时间返回指定日期对象的秒数(0-59)。 |
getMilliseconds() | 毫秒 | 根据本地时间返回指定日期对象的毫秒(0-999)。 |
getTime() | 时间戳 | 返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数 对于1970-1-1 00:00:00 UTC之前的时间返回负值。 |
getFullYear()方法以四位数的数字返回日期的年份。
var d = new Date(); d.getFullYear();测试看看‹/›
getMonth()方法以数字(0到11)返回一年中的月份。
var d = new Date(); d.getMonth();测试看看‹/›
JavaScript的月份从0到11。一月是0,十二月是11。
在以下示例中,month变量保存月份的名称:
var arr = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; var d = new Date(); var month = arr[d.getMonth()];测试看看‹/›
getDate()方法以数字(1-31)形式返回月份中的某天。
var d = new Date(); d.getDate();测试看看‹/›
getDay()方法以数字(0-6)返回星期几。
var d = new Date(); d.getDay();测试看看‹/›
JavaScript将工作日从0到6进行计数。星期日为0,星期六为6。
在下面的示例中,Today变量保存日期名称:
var arr = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; var d = new Date(); var today = arr[d.getDay()];测试看看‹/›
getHours()方法将日期的小时数返回为数字(0-23)。
var d = new Date(); d.getHours();测试看看‹/›
getMinutes()方法将日期的分钟数返回为数字(0-59)。
var d = new Date(); d.getMinutes();测试看看‹/›
getSeconds()方法将日期的秒数返回为数字(0-59)。
var d = new Date(); d.getSeconds();测试看看‹/›
getMilliseconds()方法以数字(0-999)的形式返回日期的毫秒数。
var d = new Date(); d.getMilliseconds();测试看看‹/›
getTime()方法返回自1970年1月1日以来的毫秒数。
var d = new Date(); d.getTime();测试看看‹/›
一天(24小时)为8,640万毫秒。
对于上面我们学到的所有get方法,都有一个对应的set方法。
如果使用get从日期中检索特定的组成部分,则使用set来修改日期的组成部分。
下表是Date对象的set方法的表:
方法 | Date/Time | 范围 |
---|---|---|
setFullYear() | 设置完整年份 | YYYY |
setMonth() | 设置月份 | 0-11(0 =一月) |
setDate() | 设置为某天(当月) | 1-31 |
setDay() | 设置一周中的某天 | 0-6(0 =星期日) |
setHours() | 设置小时 | 0-23 |
setMinutes() | 设置分钟 | 0-59 |
setSeconds() | 设置秒数 | 0-59 |
setMilliseconds() | 设置毫秒 | 0-999 |
setTime() | 设置时间戳 | 通过指定从 1970-1-1 00:00:00 UTC 开始经过的毫秒数来设置日期对象的时间 对于早于 1970-1-1 00:00:00 UTC的时间可使用负值。 |
setFullYear()方法设置日期对象的年份。
var d = new Date(); d.setFullYear(2010);测试看看‹/›
setFullYear()方法可以选择设置月和日。
var d = new Date(); d.setFullYear(2010, 8, 30);测试看看‹/›
setMonth()方法设置日期对象的月份(0-11)。
var d = new Date(); d.setMonth(11);测试看看‹/›
setDate()方法设置日期对象的月份中的某一天(1-31)。
var d = new Date(); d.setDate(22);测试看看‹/›
setHours()方法设置日期对象的小时数(0-23)。
var d = new Date(); d.setHours(18);测试看看‹/›
setMinutes()方法设置日期对象的分钟数(0-59)。
var d = new Date(); d.setMinutes(32);测试看看‹/›
setSeconds()方法设置日期对象的秒数(0-59)。
var d = new Date(); d.setSeconds(24);测试看看‹/›
setMilliseconds()方法设置日期对象的毫秒数(0-999)。
var d = new Date(); d.setMilliseconds(420); document.getElementById('result').innerHTML = d.getMilliseconds();测试看看‹/›
setTime()方法将Date对象设置为自1970年1月1日以来的毫秒数。
var d = new Date(); d.setTime(1542655292087);测试看看‹/›
上面讨论的get方法根据用户的本地时区设置检索日期组件。
为了更好地指定日期和时间,可以使用getUTC方法,该方法与get方法完全相同,不同之处在于它们根据UTC(世界标准时间)标准计算时间。
下表是JavaScript Date对象的UTC方法的表:
方法 | Date/Time | 范围 |
---|---|---|
getUTCFullYear() | 年 | YYYY |
getUTCMonth() | 月 | 0-11(0 =一月) |
getUTCDate() | 某一天(当月) | 1-31 |
getUTCDay() | 一周中的某天 | 0-6(0 =星期日) |
getUTCHours() | 小时 | 0-23 |
getUTCMinutes() | 分钟 | 0-59 |
getUTCSeconds() | 秒 | 0-59 |
getUTCMilliseconds() | 毫秒 | 0-999 |
要知道 本地时间(local) 和 UTC get方法之间的区别,我们可以运行以下代码:
let now = new Date(); // 打印本地时间和UTC时区(local 和 UTC) document.write(now.getHours()); document.write(now.getUTCHours());测试看看‹/›
运行此代码将打印出当前时间以及UTC时区的时间。如果您当前处于UTC时区,则运行上述程序所输出的数字将相同。
在此示例中,JavaScript显示当前时间。
要获取完整的属性和方法参考,请访问我们的JavaScript日期参考。
参考部分包含所有Date属性和方法的描述和示例。