JavaScript 日期和时间
在本教程中,您将学习如何在 JavaScript 中使用日期和时间。
使用日期对象
Date 对象是一个内置的 JavaScript 对象。 它允许您通过浏览器访问计算机系统时钟来获取用户的本地时间。 Date 对象还提供了多种方法来管理、操作和格式化日期和时间。
创建日期对象
在我们开始处理日期和时间之前,我们需要创建一个 Date 对象。 与其他内置对象(例如数组或函数)不同,日期没有对应的文字形式:所有日期对象都需要使用 Date 构造函数创建,即 Date()
。 p>
在 JavaScript 中有四种不同的方法来创建 Date 对象。
new Date()
语法
您可以简单地声明一个新的 Date 对象而不初始化它的值。 在这种情况下,日期和时间值将设置为运行脚本的用户设备上的当前日期和时间。
var d = new Date();
document.write(d);
新的 Date(year, month, ...) 语法
您还可以通过传递以下以逗号分隔的参数来初始化 Date 对象:年、月、日、小时、分钟、秒和毫秒。
年份和月份参数是必需的,其他参数是可选的。
var d = new Date(2018,0,31,14,35,20,50);
document.write(d);
该日期实际上表示 2018 年 1 月 31 日 14:35:20 和 50 毫秒。 如果您愿意,您可以忽略时间部分并仅指定日期部分。
新的 Date(dateString) 语法
JavaScript 还允许您通过传递表示日期或日期和时间的字符串来创建 Date 对象,如下例所示:
var d = new Date("31 January 2018");
document.write(d);
此日期表示 2018 年 1 月 31 日。您还可以指定诸如 Jan 31 2018 之类的字符串,或许多有效变体中的任何一个,JavaScript 会自动处理。
新的 Date(milliseconds)语法
您还可以通过传递自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数来定义 Date 对象。 这一次被称为 UNIX 时代,因为 1970 年是 UNIX 操作系统正式引入的一年。 这是一个例子:
var d = new Date(1517356800000);
document.write(d);
上述日期代表 2018 年 1 月 31 日星期三 05:30:00 GMT+0530。
一旦创建了 Date 对象的实例,就可以使用它的方法来执行各种任务,例如获取日期的不同组成部分、设置或修改单个日期和时间值等。这些方法将详细描述 在以下部分中。
注意: JavaScript 提供了称为"文字"的快捷方式,用于创建大部分原生对象,而无需使用 new
运算符,例如 new Object()
, new Array()
等
获取当前日期和时间
要获取当前日期和时间,请在不传递任何参数的情况下创建一个新的 Date 对象。 这将创建一个具有当前日期和时间的对象。 这是一个例子:
var now = new Date();
alert(now); // 显示当前日期和时间
此示例的输出将如下所示(取决于时区偏移):
创建日期和时间字符串
JavaScript Date 对象提供了多种方法,如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 对象提供了几种方法,例如 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),而不是返回一个名称,例如星期日或星期一,如果是星期日,该方法 返回 0; 如果是 Monday ,该方法返回 1,以此类推。
同样,getMonth()
方法返回月数(从 0 到 11)而不是月份的名称。 这里 0 代表一年中的第一个月。 因此,如果是一月,该方法返回 0 而不是 1; 如果是八月,该方法返回 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; 当它是下午 3:00 时,它返回 15。
注意: Date 对象也有获取 UTC 分量的方法。 只需将UTC放在get之后,如getUTCDate()
、getUTCHour()
、getUTCMinutes()
等。
设置日期和时间值
除了检索日期和时间值之外,您还可以使用 JavaScript 设置或修改这些值。 这最常用于必须将日期对象的值从一个特定日期或时间更改为另一个的程序中。 让我们看看它是如何工作的。
设置年月日
Date对象提供了setFullYear()
、setMonth()
、setDate()
等方法来设置年、月、日组件 Date 对象。
例如,在以下示例中,我们使用 setFullYear()
方法将存储在变量中的当前日期提前两年更改。
var d = new Date();
d.setFullYear(d.getFullYear() + 2);
alert(d); // 显示未来日期
上面示例的输出将如下所示:
同样,您可以使用 setMonth()
方法来设置或修改 Date 对象的月份部分。
var d = new Date(); // 当前日期和时间
d.setMonth(0); // 将月份设置为 0,一月
document.write(d);
setMonth()
方法需要一个从 0 到 11 的整数值,如果您设置的月份值大于 11,则日期对象的年份值会递增。
换句话说,值 12 会导致年份值增加 1,月份值设置为 0,如下例所示:
var d = new Date(2018, 5, 24); // 2018 年 6 月 24 日
d.setMonth(12); // 将月份设置为 12,新日期为 2019 年 1 月 24 日
document.write(d);
同样,您可以修改日期对象的日期部分,如下所示:
var d = new Date(2018, 5, 24); // 2018 年 6 月 24 日
d.setDate(15); // 将日期设置为 15,新日期为 2018 年 6 月 15 日
document.write(d);
setDate()
方法需要一个从 1 到 31 的整数值。此外,如果您传递的值大于该月的天数,则该月将递增。 例如:
var d = new Date(2018, 5, 24); // 2018 年 6 月 24 日
d.setDate(36); // 将日期设置为 36,新日期为 2018 年 7 月 6 日
document.write(d);
设置小时、分钟和秒
设置时间值的方法也很简单。 setHours()
、setMinutes()
、setSeconds()
、setMilliseconds()
可用于设置 Date 对象的小时、分钟、秒和毫秒部分。
每个方法都将整数值作为参数。 小时的范围是 0 到 23。分和秒的范围是 0 到 59。毫秒的范围是 0 到 999。下面是一个示例:
var d = new Date(2018, 5, 24); // 2018 年 6 月 24 日 00:00:00
d.setHours(8);
d.setMinutes(30);
d.setSeconds(45);
d.setMilliseconds(600);
document.write(d);
上述示例的输出将如下所示: