TypeScript - 日期对象:初学者指南

你好,未来的编程巨星!今天,我们将踏上一段激动人心的旅程,探索TypeScript中的日期世界。如果你之前从未写过一行代码,也不用担心——我会成为你的友好向导,我们会一步一步地学习。在本教程结束时,你将能够像专业人士一样操作日期!

TypeScript - Date Object

什么是日期对象?

在我们深入了解之前,让我们先谈谈日期对象到底是什么。在TypeScript(和JavaScript)中,日期对象代表时间中的一个单一时刻。它就像是一个特定日期和时间的快照,我们可以对其进行操作并在我们的程序中使用。

把它想象成一个你可以设定为任何过去、现在或将来时间的数字时钟。酷吧?

语法:创建日期对象

现在,让我们看看如何在TypeScript中创建一个日期对象。有几种方法可以做到这一点,我会通过示例来展示每一种方法。

1. 当前日期和时间

要创建一个包含当前日期和时间的日期对象,你可以使用new Date()构造函数,不传递任何参数。

let currentDate = new Date();
console.log(currentDate);

如果你运行这段代码,你将看到类似以下内容:

2023-06-15T12:30:45.678Z

这可能看起来有点令人畏惧,但别担心!这只是以标准格式显示当前日期和时间。

2. 特定日期和时间

你还可以为特定的日期和时间创建一个日期对象。有几种方法可以做到这一点:

a. 使用日期字符串

let christmas = new Date("December 25, 2023 00:00:00");
console.log(christmas);

这将输出:

2023-12-25T00:00:00.000Z

b. 使用单独的参数

let newYear = new Date(2024, 0, 1, 0, 0, 0);
console.log(newYear);

这将输出:

2024-01-01T00:00:00.000Z

注意,月份中的1代表一月。在JavaScript和TypeScript中,月份是从零开始的,这意味着一月是0,二月是1,以此类推。这是一个经常让初学者感到困惑的细节,所以请记住这一点!

c. 使用自纪元以来的毫秒数

你也可以通过指定自1970年1月1日(称为“纪元”)以来的毫秒数来创建一个日期:

let someDate = new Date(1687012345678);
console.log(someDate);

这将输出对应于该纪元后的毫秒数的日期和时间。

使用日期对象

现在我们知道如何创建日期对象,让我们看看我们可以对它们做些什么。

获取日期组成部分

日期对象有几个方法可以获取日期的不同组成部分:

let today = new Date();

console.log("全年:", today.getFullYear());
console.log("月份:", today.getMonth());
console.log("日期:", today.getDate());
console.log("星期:", today.getDay());
console.log("小时:", today.getHours());
console.log("分钟:", today.getMinutes());
console.log("秒:", today.getSeconds());

这可能输出如下内容:

全年: 2023
月份: 5
日期: 15
星期: 4
小时: 12
分钟: 45
秒: 30

记住,getMonth()返回的是零索引的月份,所以5代表六月!

设置日期组成部分

正如我们可以获取日期的组成部分一样,我们也可以设置它们:

let futureDate = new Date();

futureDate.setFullYear(2025);
futureDate.setMonth(11);  // 十二月
futureDate.setDate(31);
futureDate.setHours(23);
futureDate.setMinutes(59);
futureDate.setSeconds(59);

console.log(futureDate);

这将设置日期为2025年12月31日23:59:59。

格式化日期

TypeScript(和JavaScript)提供了一些内置的方法来格式化日期:

let event = new Date("July 4, 2023 12:00:00");

console.log(event.toDateString());
console.log(event.toTimeString());
console.log(event.toLocaleDateString());
console.log(event.toLocaleTimeString());
console.log(event.toISOString());

这将输出:

Tue Jul 04 2023
12:00:00 GMT+0000 (协调世界时)
7/4/2023
12:00:00 PM
2023-07-04T12:00:00.000Z

日期算术

日期对象最酷的特性之一是我们可以对它们进行数学运算!让我们看几个例子:

添加天数

let today = new Date();
let nextWeek = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);

console.log("今天:", today);
console.log("下周:", nextWeek);

这将把当前日期加7天。我们将7(天)乘以24(小时)乘以60(分钟)乘以60(秒)乘以1000(毫秒)来得到一周的毫秒数。

日期相减

我们还可以计算两个日期之间的差异:

let start = new Date("March 1, 2023");
let end = new Date("June 15, 2023");

let difference = end.getTime() - start.getTime();
let days = Math.floor(difference / (24 * 60 * 60 * 1000));

console.log(`在${start.toDateString()}和${end.toDateString()}之间有${days}天`);

这将计算2023年3月1日和2023年6月15日之间的天数。

结论

恭喜你!你已经迈出了进入TypeScript日期对象世界的第一步。我们涵盖了创建日期、获取和设置日期组成部分、格式化日期,甚至进行日期算术。

记住,处理日期有时可能会很棘手,特别是当处理不同的时区或夏令时的时候。但随着练习,你会变得更加舒适和熟练。

下面是我们涵盖的主要方法的总结表格:

方法 描述
new Date() 创建一个新的日期对象
getFullYear() 获取年份(四位数字)
getMonth() 获取月份(0-11)
getDate() 获取月份中的日期(1-31)
getDay() 获取星期中的日期(0-6)
getHours() 获取小时(0-23)
getMinutes() 获取分钟(0-59)
getSeconds() 获取秒(0-59)
setFullYear() 设置年份
setMonth() 设置月份
setDate() 设置月份中的日期
setHours() 设置小时
setMinutes() 设置分钟
setSeconds() 设置秒
toDateString() 返回日期部分为人类可读的字符串
toTimeString() 返回时间部分为人类可读的字符串
toLocaleDateString() 返回使用区域习惯的日期部分
toLocaleTimeString() 返回使用区域习惯的时间部分
toISOString() 返回日期的ISO格式

继续练习,继续编码,最重要的是,享受乐趣!编程世界充满了激动人心的可能性,掌握日期只是开始。快乐编程!

Credits: Image by storyset