TypeScript 之 Date日期对象
online工具: PlayGround
官方源码: GitHub TypeScript
Date
在JavaScript或TypeScript中,使用 Date对象可用于获取日期和时间等。
let date = new Date();
console.log(typeof(date)); // "object"
console.log(date); // Date: "2023-11-28T07:59:50.865Z"
对于Date对象的实例化,定义在DateConstructor
中
// lib.es5.d.ts
interface DateConstructor {
readonly prototype: Date;
// 创建日期对象
new(): Date;
// 创建日期对象
new(value: number | string): Date;
/*
创建日期对象
year 年份,需要指定完整的年份,如果在[0, 99]之间,则表示为1900+year
monthIndex 月份,范围在[0,11]之间, 表示1~12月
date 天数,范围在[1,31]之间
hours 小时,范围在[0,23]之间,如果输入minutes,就必须有该参数
minutes 分钟,范围在[0,59]之间
seconds 秒,范围在[0,59]之间
ms 毫秒,范围在[0, 999]之间
*/
new(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
}
declare var Date: DateConstructor;
支持:
- 无参数构建
- 使用
number
或string
构建 - 使用年、月、天、小时、分钟等参数构建
主要示例:
// 无参数构建
let date_1 = new Date();
console.log(date_1); // Date: "2023-11-28T08:34:31.365Z"
// 使用字符串构建
let date_2 = new Date("2023-11-28 16:32:59");
console.log(date_2); // Date: "2023-11-28T08:32:59.000Z"
// 使用数字构建
let date_3 = new Date(1701160391058);
console.log(date_3); // Date: "2023-11-28T08:33:11.058Z"
对象方法
关于Date时间的范围这里说明下:
字段 | 范围说明 |
---|---|
年份year | 设置年份需要完整的字段,如果在[0, 99]之间表示: 1900 + year |
月份month | 范围在[0, 11]之间,表示1~12月 |
天数date | 范围在[1, 31]之间,表示每月的第几天 |
天数day | 范围在[1, 7]之间,表示星期几 |
小时hour | 范围在[0, 23]之间 |
分钟minute | 范围在[0, 59]之间 |
秒second | 范围在[0, 59]之间 |
毫秒ms | 范围在[0, 999]之间 |
Date对象提供了很多设置或获取时间字段的方法, 因方法较多,分为如下几类:
- 本地时间 主要接口是: setXXX | getXXX
- UTC时间 主要接口是: setUTCXXX | getUTCXXX
- 转换 主要接口是: toXXX
注:setXXX参数的类型和getXXX的返回类型均为number
本地时间
方法 | 描述 |
---|---|
setFullYear(year, month?, date?) | 设置年份,可设定月份和哪一天 |
getFullYear() | 获取年份 |
setMonth(month, date?) | 设置月份,可设定月份的哪一天 |
getMonth() | 获取月份 |
setDate(date: number) | 设置月份的哪一天 |
getDate() | 获取月份的哪一天 |
getDay() | 获取星期几 |
setHours(hours, min?, sec?, ms?) | 设置小时,可设置分钟,秒,毫秒 |
getHours() | 获取小时 |
setMinutes(min, sec?, ms?) | 设置分钟,可设置秒,毫秒 |
getMinutes() | 获取分钟 |
setSeconds(sec, ms?) | 设置秒,可设置毫秒 |
getSeconds() | 获取秒 |
setMilliseconds(ms: number) | 设置毫秒 |
getMilliseconds() | 获取毫秒 |
getTimezoneOffset() |
简单示例:
let date = new Date();
console.log("Year:", date.getFullYear()); // "Year:", 2023
console.log("Month:", date.getMonth()); // "Month:", 10
console.log("Date:", date.getDate()); // "Date:", 28
console.log("Day:", date.getDay()); // "Day:", 2
console.log("Hour:", date.getHours()); // "Hour:", 18
console.log("Minutes:", date.getMinutes()); // "Minutes:", 29
console.log("Seconds:", date.getSeconds()); // "Seconds:", 5
console.log("ms:", date.getMilliseconds()); // "ms:", 56
UTC时间
方法 | 描述 |
---|---|
setTime(time) | 设置自1970年1月1日 00:00开始表示的时间 |
getTime() | 获取自1970年1月1日 00:00开始经过的毫秒数 |
setUTCFullYear(year, month?, date?) | 设置年份 |
getUTCFullYear() | 获取年份 |
setUTCMonth(month, date?) | 设置月份 |
getUTCMonth() | 获取月份 |
setUTCDate(date) | 设置月份中的某一天 |
getUTCDate() | 设置月份中的某一天 |
getUTCDay() | 获取星期几 |
setUTCHours(hours, min?, sec?, ms?) | 设置小时 |
getUTCHours() | 获取小时 |
setUTCMinutes(min, sec?, ms?) | 设置分钟 |
getUTCMinutes() | 获取分钟 |
setUTCSeconds(sec, ms?) | 设置秒 |
getUTCSeconds() | 获取秒 |
setUTCMilliseconds(ms) | 设置毫秒 |
getUTCMilliseconds() | 获取毫秒 |
在DateConstructor
的定义中,Date 对象除了实例化以外,也支持获取UTC时间相关
// lib.es5.d.ts
interface DateConstructor {
// 解析日期字符串,返回该日期到1970年1月1日午夜之间的毫秒数
parse(s: string): number;
// 获取1970年1月1日世界协调时间(UTC)(或GMT)午夜到指定日期之间的毫秒数
UTC(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): number;
// 返回从世界协调时间(UTC) 1970年1月1日午夜开始经过的毫秒数
now(): number;
}
declare var Date: DateConstructor;
简单的示例:
// 解析时间字符串
const date = new Date(Date.parse("2023-11-28T08:32:59.000Z"));
console.log(date);
// 获取UTC时间
let curTime: number = Date.now();
console.log(curTime); // 1701160986377
let curDate = new Date(curTime);
console.log(curDate); // Date: "2023-11-28T08:43:06.377Z"
转换
方法 | 返回类型 | 说明 |
---|---|---|
toString() | string | 返回对象的字符串 |
toDateString() | string | 返回日期字符串 |
toTimeString() | string | 返回时间字符串 |
toLocaleString() | string | 返回当前环境下的字符串 |
toLocaleDateString() | string | 返回当前环境下的日期字符串 |
toLocaleTimeString() | string | 返回当前环境下的时间字符串 |
toUTCString() | string | 返回UTC字符串 |
toISOString() | string | 返回ISO格式的字符串 |
toJSON() | string | 将对象转换JSON |
valueOf() | number | 获取以毫秒为单位的原始对象数字 |
简单的示例:
let date = new Date();
// "Tue Nov 28 2023 18:43:59 GMT+0800 (中国标准时间)"
console.log(date.toString());
// "Tue Nov 28 2023"
console.log(date.toDateString());
// "18:43:59 GMT+0800 (中国标准时间)"
console.log(date.toTimeString());
// "2023-11-28T10:43:59.246Z"
console.log(date.toJSON());
// 1701168239246
console.log(date.valueOf());
延伸待定…