JS日期和时间 – JavaScript高级教程

上一章JavaScript教程请查看:JS定时器
在本教程中,你将学习如何使用JavaScript处理日期和时间。
使用Date对象Date对象是一个内置的JavaScript对象,它允许你通过浏览器访问计算机系统时钟来获得用户的本地时间,Date对象还提供了一些用于管理、操作和格式化日期和时间的方法。
创建日期对象在开始处理日期和时间之前,我们需要创建一个date对象。与其他内置对象(如数组或函数)不同,日期没有对应的文字形式:所有日期对象都需要使用date构造函数date()创建。
在JavaScript中创建日期对象有四种不同的方法。
new Date()语法
你可以简单地声明一个新的Date对象,而不需要初始化它的值。在本例中,日期和时间值将设置为运行脚本的用户设备上的当前日期和时间。

var d = new Date(); document.write(d);

new Date(year, month, … ) 语法
你还可以通过传递以下以逗号分隔的参数来初始化Date对象:年、月、日、小时、分钟、秒和毫秒。
需要年和月参数,其他参数可选。
var d = new Date(2020,0,31,14,35,20,50); document.write(d);

这个日期实际上表示2020年1月31日14:35:20和50毫秒,如果有需要,可以忽略时间部分,只指定日期部分。
new Date(dateString)语法
JavaScript还允许你通过传递表示日期或日期和时间的字符串来创建日期对象,如下面的示例所示:
var d = new Date("31 January 2020"); document.write(d);

这一天是2020年1月31日,你还可以指定字符串,如2020年1月31日,或许多有效的变化,JavaScript将自动处理。
new Date(milliseconds)语法
你还可以通过传递自1970年1月1日起(在00:00:00 GMT)的毫秒数来定义Date对象。这一时期被称为UNIX纪元,因为1970年是UNIX操作系统正式引入的一年。这里有一个例子:
var d = new Date(2017356800000); document.write(d);

一旦创建了Date对象的实例,就可以使用它的方法执行各种任务,例如获取日期的不同组件、设置或修改单个日期和时间值等。这些方法将在下面的部分中详细描述。
注意:JavaScript提供了一种称为“字面量”的快捷方式来创建大多数本机对象,而不必使用new操作符,如new object()、new Array()等。
获取当前日期和时间
要获取当前日期和时间,请在不传递任何参数的情况下创建一个新的date对象。这将创建一个具有当前日期和时间的对象。这里有一个例子
var now = new Date(); alert(now); // 显示当前日期和时间

创建日期和时间字符串
JavaScript日期对象提供了几种方法,如toDateString()、toLocaleDateString()等,以生成不同格式的日期字符串。下面是一个例子:
var d = new Date(); alert(d.toDateString ()); // 显示一个简短的日期字符串 alert(d.toLocaleDateString ()); // 显示本地化的日期字符串 alert(d.toISOString ()); // 显示ISO标准的日期字符串 alert(d.toUTCString ()); // 显示转换为UTC时间的日期字符串 alert(d.toString ()); / /显示本地时区的完整日期字符串

类似地,你可以使用Date对象的toLocaleTimeString()、toTimeString()方法来生成时间字符串,如下面的示例所示:
var d = new Date(); alert(d.toTimeString ()); // 显示日期的时间部分 alert(d.toLocaleTimeString ()); // 显示本地化的时间字符串

获取特定的日期和时间组件一旦有了合适的date对象,就可以使用许多方法从其中提取细节,比如月份、日期、小时或分钟值等。下一节将介绍从Date对象中提取单个信息片段的各种方法。
获取年、月和日期
Date对象提供了几个方法,如getFullYear()、getMonth()、getDay()等,你可以使用这些方法分别从Date对象中提取特定的日期组件,例如年、月、星期等。下面的示例演示如何使用这些方法从date对象获取特定的日期组件:
var d = new Date(); // 提取日期部分 alert(d.getDate ()); // 显示月份的日期 alert(d.getDay ()); // 显示进入一周的天数(0-6) alert(d.getMonth ()); // 显示进入年份的月份(0-11) alert(d.getFullYear ()); // 显示全年(四位数字)

getDay()方法返回一个数字,表示一周的日期(从0到6),而不是返回一个名称,如Sunday或Monday,如果是Sunday,则返回0; 如果是周一,则方法返回1,依此类推。
同样,getMonth()方法将返回月数(从0到11),而不是月份的名称。这里0代表一年的第一个月。因此,如果是一月份,则该方法返回0而不是1; 如果是8月,则方法返回7。
获取小时、分钟、秒和毫秒
类似地,Date对象提供了getHours()、getMinutes()、getSeconds()、getTimezoneOffset()等方法来从Date对象中提取时间组件。
var d = new Date(); // 提取时间部分 alert(d.getHours ()); // 显示每天的小时数(0-23) alert(d.getMinutes ()); // 显示小时的分钟数(0-59) alert(d.getSeconds ()); // 将秒显示为分钟(0-59) alert(d.getMilliseconds ()); // 将毫秒数显示为秒(0-999) alert(d.getTime ()); // 显示自1970年1月1日以来的毫秒数 alert(d.getTimezoneOffset ()); // 显示时区偏移(格林威治标准时间),以分钟为单位

getHours()方法根据24小时时钟返回一天中的小时数(从0到23)。因此,当是午夜时分,方法返回0;下午三点的时候,返回15。
注意:Date对象还有获取UTC组件的方法。只需在get之后放置UTC,如getUTCDate()、getUTCHour()、getUTCMinutes()等。
设置日期和时间值除了检索日期和时间值之外,还可以使用JavaScript设置或修改这些值。这是在程序中最常使用的,你必须将一个日期对象的值从一个特定的日期或时间更改为另一个日期或时间。让我们看看它是如何工作的。
设定年、月、日
Date对象提供了setFullYear()、setMonth()和setDate()方法来分别设置Date对象的年、月、日期组件。
例如,在下面的示例中,我们使用了setFullYear()方法来更改未来两年之前存储在变量中的当前日期。
var d = new Date(); d.setFullYear(d.getFullYear() + 2); alert(d); // 显示未来的日期

同样,你可以使用setMonth()方法来设置或修改Date对象的month部分。
var d = new Date(); // 当前日期和时间 d.setMonth(0); // 0为一月 document.write(d);

setMonth()方法需要一个从0到11的整数值,如果将月份的值设置为大于11,则date对象的year值将递增。
换句话说,12的值导致年份值增加1,而月份值设置为0,如下例所示:
var d = new Date(2020, 5, 24); d.setMonth(12); document.write(d);

类似地,你可以修改date对象的date部分,如下所示
var d = new Date(2021, 5, 24); d.setDate(15); document.write(d);

setDate()方法需要一个从1到31的整数值。另外,如果传递的值大于该月中的天数,则该月将递增。例如:
var d = new Date(2021, 5, 24); d.setDate(36); document.write(d);

设置小时、分钟和秒
设置时间值的方法也非常简单,可以使用setHours()、setMinutes()、setSeconds()、setms()分别设置Date对象的小时、分钟、秒和毫秒部分。
【JS日期和时间 – JavaScript高级教程】每个方法都以整数值为参数,时间从0到23小时不等,分和秒的范围是从0到59。毫秒从0到999。下面是一个例子:
var d = new Date(2018, 5, 24); d.setHours(8); d.setMinutes(30); d.setSeconds(45); d.setMilliseconds(600); document.write(d);

    推荐阅读