当前位置: 首页 > article >正文

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

延伸待定…


http://www.kler.cn/a/149712.html

相关文章:

  • Java复习42(PTA)
  • 基于matlab的CNN食物识别分类系统,matlab深度学习分类,训练+数据集+界面
  • C++数据结构算法学习
  • WPF+MVVM案例实战与特效(二十八)- 自定义WPF ComboBox样式:打造个性化下拉菜单
  • kafka如何知道哪个消费者消费哪个分区?
  • 11个简单易用的电商购物车设计案例
  • 讲述 什么是鸿蒙 为什么需要鸿蒙 为什么要学习鸿蒙
  • 【libGDX】Mesh纹理贴图
  • springboot集成mybatis-plus
  • uniapp 可拖动可吸附悬浮按钮,兼容app,小程序,H5
  • 算法通关村-----数论问题解析
  • P9240 [蓝桥杯 2023 省 B] 冶炼金属(比值问题)
  • 国内划片机行业四大企业之博捷芯:技术驱动,领跑未来
  • 智能优化算法应用:基于回溯搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
  • 每日一练:约瑟夫生者死者小游戏
  • Spring Application Event 在事件驱动设计中的应用
  • 西南科技大学数字电子技术实验二(SSI逻辑器件设计组合逻辑电路及FPGA实现 )预习报告
  • python tkinter 使用(七)
  • 3-Python与设计模式--简单工厂模式
  • Android平台GB28181设备接入模块开发填坑指南
  • C++-多态常见试题的总结
  • 物联网边缘计算是什么?如何实现物联网边缘计算?
  • NX二次开发UF_CURVE_create_combine_curves 函数介绍
  • 工业智能网关如何保障数据通信安全
  • 【华为数通HCIP | 网络工程师】821刷题日记-BFD和VRRP 及重点(1)
  • shopee买家通系统批量注册虾皮买家号的软件