跳到主要内容

JavaScript 日期和时间

提示
  1. Date对象基本概念:JavaScript中的日期和时间由Date对象表示,该对象提供了日期时间信息和多种方法,基于1970年1月1日UTC的毫秒数表示。
  2. 创建Date对象:可以通过new Date()new Date(milliseconds)new Date(dateString)new Date(year, month, day, hours, minutes, seconds, milliseconds)等多种方式创建Date对象。
  3. Date对象的方法和格式化Date对象提供了各种方法来获取或设置日期和时间,如getFullYear()getMonth()等。尽管JavaScript没有内置日期格式化函数,但可以通过提取日期组件并自定义格式化。

在JavaScript中,日期和时间由 Date 对象表示。Date 对象提供日期和时间信息,并提供各种方法。

JavaScript中的日期定义了 EcmaScript纪元,代表自 1970年1月1日协调世界时间(UTC) 以来的毫秒数。这个日期和时间与UNIX纪元(计算机记录的日期和时间值的主要基准值)相同。

创建日期对象

创建日期对象有四种方式。

  • new Date()
  • new Date(milliseconds)
  • new Date(Date string)
  • new Date(year, month, day, hours, minutes, seconds, milliseconds)

new Date()

您可以使用 new Date() 构造器创建一个日期对象。例如,

const timeNow = new Date();
console.log(timeNow); // 显示当前日期和时间

输出

Mon Jul 06 2020 12:03:49 GMT+0545 (尼泊尔时间)

这里,new Date() 创建了一个新的日期对象,包含当前日期和本地时间。

new Date(milliseconds)

Date 对象包含一个代表自 1970年1月1日 UTC 以来毫秒数的数字。

new Date(milliseconds) 通过向零时间添加毫秒数来创建一个新的日期对象。例如,

const time1 = new Date(0);

// 纪元时间
console.log(time1); // 1970年1月1日 05:30:00

// 纪元时间后100000000000毫秒
const time2 = new Date(100000000000);
console.log(time2); // 1973年3月3日 15:16:40

注意:1000毫秒等于1秒。

new Date(date string)

new Date(date string) 从日期字符串创建一个新的日期对象。

在JavaScript中,通常有三种日期输入格式。

ISO日期格式

您可以通过传递ISO日期格式来创建日期对象。例如,

// ISO日期(国际标准)
const date = new Date("2020-07-01");

// 结果日期将根据UTC
console.log(date); // 2020年7月1日 05:45:00 GMT+0545

您还可以只传递年和月或只传递年。例如,

const date = new Date("2020-07");
console.log(date); // 2020年7月1日 05:45:00 GMT+0545

const date1 = new Date("2020");
console.log(date1); // 2020年7月1日 05:45:00 GMT+0545

您还可以向ISO日期传递特定时间。

const date = new Date("2020-07-01T12:00:00Z");
console.log(date); // 2020年7月1日 17:45:00 GMT+0545

注意:日期和时间用大写字母 T 分隔。UTC时间用大写 Z 定义。

短日期格式和长日期格式

另外两种日期格式是 短日期格式长日期格式

// 短日期格式 "MM/DD/YYYY"
const date = new Date("03/25/2015");
console.log(date); // 2015年3月25日 00:00:00 GMT+0545

// 长日期格式 "MMM DD YYYY"
const date1 = new Date("Jul 1 2020");
console.log(date1); // 2020年7月1日 00:00:00 GMT+0545

// 月份和日可以任意顺序
const date2 = new Date("1 Jul 2020");
console.log(date2); // 2020年7月1日 00:00:00 GMT+0545

// 月份可以完整或缩写。月份名不区分大小写。
// 逗号被忽略
const date3 = new Date("July 1 2020");
console.log(date3); // 2020年7月1日 00:00:00 GMT+0545

const date4 = new Date("JULY, 1, 2020");
console.log(date4); // 2020年7月1日 00:00:00

new Date(year, month, day, hours, minutes, seconds, milliseconds)

new Date(year, month,...) 通过传递特定的日期和时间创建一个新的日期对象。例如,

const time1 = new Date(2020, 1, 20, 4, 12, 11, 0);
console.log(time1); // 2020年2月20日 04:12:11

传递的参数有特定的顺序。

如果传递四个数字,它表示年、月、日和小时。例如,

const time1 = new Date(2020, 1, 20, 4);
console.log(time1); // 2020年2月20日 04:00:00

类似地,如果传递两个参数,它表示年和月。例如,

const time1 = new Date(2020, 1);
console.log(time1); // 2020年2月1日 00:00:00

注意:如果您只传递一个参数,它会被视为毫秒。因此,您必须传递两个参数才能使用此日期格式。

在JavaScript中,月份从 0到11 计算。一月是 0,十二月是 11

JavaScript日期方法

JavaScript Date对象中有各种方法可用。

方法描述
now()返回与当前时间相对应的数值(自1970年1月1日 00:00:00 UTC以来经过的毫秒数)
getFullYear()根据本地时间获取年份
getMonth()根据本地时间获取月份,从0到11
getDate()根据本地时间获取月份中的日(1-31)
getDay()根据本地时间获取星期中的日(0-6)
getHours()根据本地时间获取小时,从0到23
getMinutes根据本地时间获取分钟,从0到59
getUTCDate()根据世界时间获取月份中的日(1–31)
setFullYear()根据本地时间设置完整年份
setMonth()根据本地时间设置月份
setDate()根据本地时间设置月份中的日
setUTCDate()根据世界时间设置月份中的日

示例:日期方法

const timeInMilliseconds = Date.now();
console.log(timeInMilliseconds); // 1593765214488

const time = new Date();

// 获取月份中的日
const date = time.getDate();
console.log(date); // 30

// 获取年份
const year = time.getFullYear();
console.log(year); // 2020

const utcDate = time.getUTCDate();
console.log(utcDate); // 30

const event = new Date("Feb 19, 2020 23:15:30");
// 设置日期
event.setDate(15);
console.log(event.getDate()); // 15

// 二月只有28天!
event.setDate(35);

console.log(event.getDate()); // 7

格式化日期

与其他编程语言不同,JavaScript没有提供内置函数来格式化日期。

然而,您可以提取单独的部分并像这样使用。

const currentDate = new Date();
const date = currentDate.getDate();
const month = currentDate.getMonth();
const year = currentDate.getFullYear();

// 以特定格式显示
let monthDateYear = month + 1 + "/" + date + "/" + year;

console.log(monthDateYear); // 2020/7/3

注意:上述程序日期和月份长度不一致,因为日期和月份有单位数和双位数。

Date 对象中的自动纠正

当您在Date对象中分配超出范围的值时,它会自动纠正自己。例如,

const date = new Date(2008, 0, 33);
// 一月没有 33 天

console.log(date);

输出

Sat Feb 02 2008

要了解更多关于 JavaScript 中的日期和时间,请访问 揭秘日期和时间