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+yearmonthIndex 月份,范围在[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.mzph.cn/news/181312.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++干货铺】STL简述 | string类的使用指南

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 什么是STL STL的版本 STL的六大组件 STL的缺陷 string类 C语言中的字符串 标准库中的string类 string类常用的接口使用指南 string类中常见的构造 strin…

CUDA安装及环境配置——最新详细版

确定安装版本 在安装之前呢,我们需要确定三件事 第一:查看显卡支持的最高CUDA的版本,以便下载对应的CUDA安装包 第二:查看对应CUDA对应的VS版本,以便下载并安装对应的VS版本(vs需要先安装) 第三…

【vue脚手架配置代理+github用户搜索案例+vue项目中常用的发送Ajax请求的库+slot插槽】

vue脚手架配置代理github用户搜索案例vue项目中常用的发送Ajax请求的库slot插槽 1 vue脚手架配置代理2 github用户搜索案例2.1 静态列表2.2 列表展示2.3 完善案例 3 vue项目中常用的发送Ajax请求的库3.1 xhr3.2 jQuery3.3 axios3.4 fetch3.5 vue-resource 4 slot 插槽4.1 效果4…

【沁恒蓝牙mesh】CH58x 将RTC时钟切换为LSE外部低速时钟

本文主要记录了【沁恒蓝牙mesh】CH58x 如何将RTC时钟切换为外部时钟 💖 作者简介:大家好,我是喜欢记录零碎知识点的小菜鸟。😎📝 个人主页:欢迎访问我的 Ethernet_Comm 博客主页🔥🎉…

实测有效的 8 个顶级Android 数据恢复工具

由于我们现在生活在一个依赖数字数据的时代,当重要文件从我们的 Android 手机中消失时,这将是一场数字噩梦。如果您没有预先备份Android手机上的数据或未能通过备份找到已删除的数据,那么选择最好的Android数据恢复软件是最佳选择。 因此&am…

【C 语言经典100例】C 练习实例13 - 水仙花数

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数 本身。例如:153是一个"水仙花数",因为1531的三次方+5的三次方+3的三次方…

苹果提醒事项怎么用?几个简单步骤就能学会!

苹果提醒事项可以帮助你轻松管理待办事项,让你更好地安排自己的时间和工作。但是,有些小伙伴可能对如何使用这个功能还有一些疑问。苹果提醒事项怎么用?不要担心,小编将为大家提供使用提醒事项的方法,帮助你学会如何使…

Nginx系列-正向代理和反向代理

Nginx系列-正向代理和反向代理 文章目录 Nginx系列-正向代理和反向代理1. 三个对象2. 两种场景代理2.1. 正向代理2.2. 反向代理 3. 两种场景的对比3.1 为什么叫做反向代理3.2 正向代理和反向代理的作用 1. 三个对象 客户端:发出请求到代理,并接收代理的…

Android : Fragment 传递数据 — 简单应用

示例图: 创建 Fragment new -> Fragment -> Fragment(Blank) MainActivity.java package com.example.fragmentdemo;import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import andro…

Docker 如何在前端项目动态插入并使用变量

前言 根据项目需求,在实现登出功能时,需要根据测试环境和生产环境调用不同的登出URL。本文将介绍如何在Docker前端镜像中设置变量以及使用变量的方法。 解决办法 在生成前端容器的阶段,可以使用同一个镜像,根据不同的环境传入参…

C语言每日一题(41)循环队列

力扣 622 循环队列 题目描述 设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。 循环队列的一个好处是我们可以利用这个队列之前…

5W2H分析法

5W2H分析法 5W2H分析法又叫七问分析法。 模型介绍 简单、方便,易于操作的思考(框架)模型,问题分析模型,它可以帮助我们保证思考的严谨与全面,也能给人启发,有着广泛的应用: 提问-可…

AndroidNDK开发之交叉编译

在Android studio2.2以及以上,构建原生库的默认工具是cmake。 CMake是一个跨平台的构建工具,可以使用简单的语句来描述所有平台的安装(编译过程)。 能够输出各种各样的makefile或者project文件。cmake并不直接构建出最终的软件,而是产生其他工…

Web学习笔记

Web学习笔记 flask库前端基础超链接:空连接:图片:视频(音频):嵌套使用列表表格格式化表格input表单系列 网络请求GET方式POST请求通过GET方式获取输入参数通过POST方式获取输入参数注册页面 CSS三种使用方式…

vue-组件通信之provide/inject

vue-组件通信之provide/inject 一般父传子用的都是props 但是如果我们想要实现的是爷爷传给孙子,再去用props就比较麻烦了,中间还会经过爸爸。 所以我们可以使用provide/inject,孙子就可以直接用爷爷的东西啦,provide不关心去处&…

MYSQL存储

注意: 1.如果没有指定的SESSION/GLOBAL,默认是SESSION,会话变量。 2.mysql服务重新启动之后,所设置的全局参数会失效,要想不失效,可以在/etc/my.cnf中配置。 变量 用户定义变量是用户根据需要自己定义变量…

MyBatis和MyBatis Plus的区别

文章目录 前言共同点各自的优势MyBatisMyBatis Plus各自的代码示例MyBatis 示例:实体类 User.java:MyBatis Mapper XML 配置文件 UserMapper.xml:MyBatis Mapper 接口 UserMapper.java:MyBatis 使用: MyBatis Plus 示例…

Redis队列stream,Redis多线程详解

Redis 目前最新版本为 Redis-6.2.6 ,会以 CentOS7 下 Redis-6.2.4 版本进行讲解。 下载地址: https://redis.io/download 安装运行 Redis 很简单,在 Linux 下执行上面的 4 条命令即可 ,同时前面的 课程已经有完整的视…

《尚品甄选》:后台系统——权限管理之分类和品牌管理,使用EasyExcel导入导出数据(debug一遍)

文章目录 一、分类管理1.1 表结构介绍1.2 分类列表查询 二、EasyExcel使用2.1 EasyExcel简介2.2 导出功能2.3 导入功能 三、品牌管理3.1 表结构介绍3.2 列表查询3.3 添加品牌3.4 修改品牌3.5 删除品牌 一、分类管理 分类管理就是对商品的分类数据进行维护。 1.1 表结构介绍 分…

缺省参数的声明和定义

首先,函数缺省参数不能同时出现在声明和定义中,如出现则报错: 声明和定义中同时出现缺省参数 ctrlb,编译报错,提示 “test":重定义默认参数:参数1 编译报错 当函数的声明和定义中都出现…