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;

支持:

  • 无参数构建
  • 使用numberstring构建
  • 使用年、月、天、小时、分钟等参数构建

主要示例:

// 无参数构建
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());

延伸待定…

你可能感兴趣的:(typeScript,typescript,javascript)