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());

延伸待定…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鹤九日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值