前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >typescript 中的时间处理

typescript 中的时间处理

作者头像
老麦
发布2022-12-24 09:36:50
3K0
发布2022-12-24 09:36:50
举报
文章被收录于专栏:Go与云原生Go与云原生

typescript/ javasctipt 中, 时间 是一个 构造 函数, 需要通过 const dt = new Date(xxx) 进行初始化创建时间对象。

创建时间对象

代码语言:javascript
复制
// 获取当前时间对象
const now = new Date()

// 将字符串时间转换为 Date 时间对象
const timeStr = '2021-08-23T02:42:17Z'
const dt = new Date(timeStr)

// 根据数字创建时间
const dt2 = new Date(Date.UTC(2006, 0, 2, 15, 4, 5));
console.log("event:::", dt2);

时间操作

获取时间对象的属性值

通过 getXXX() 方法, 可以获取时间对象的具体属性值。

代码语言:javascript
复制
// 将字符串时间转换为 Date 时间对象
const timeStr = '2006-01-02T13:04:05Z'
const dt = new Date(timeStr)
console.log("dt:::", dt)  // dt::: 2006-01-02T13:04:05.000Z
// 获取时间信息
const year = dt.getFullYear() // 2021
const month = dt.getMonth() // 8
const date = dt.getDate() // 23
console.log(`${year}-${month}-${date}`); // 2021-7-23

注意:由于奇奇怪怪的原因, month 的取值范围是 0-11 , 也就是说 0 -> 1月,11 -> 12月。

时间对象转字符串

通过 toXXXString() 方法,可以将时间转化为字符串对象。 但是 大多数转换结果都和本地时区和语言设置有关。

toISOString()

其中, toISOString() 方法返回一个 ISO格式的字符串: YYYY-MM-DDTHH:mm:ss.sssZ。时区总是UTC(协调世界时),加一个后缀 Z 标识。

代码语言:javascript
复制
const dtStr = dt.toISOString()
console.log("toISOString,,,", dtStr) // 2006-01-02T13:04:05.000Z
toJSON()

返回一个 时间对象的字符串, 常用于 JSON 序列化, 内部使用 toISOString() ,所以输出格式是一样的。

代码语言:javascript
复制
const dtJSonStr = dt.toJSON() // 2006-01-02T13:04:05.000Z

时间对象比较

时间对象是可以直接通过 比较符 比较的,可以看作转换成 timestamp 数字后的大小比较。

代码语言:javascript
复制
// 时间比较
// dt: 2006-01-02 
// now: 2021-08-23
if (dt > now) {
    console.log("dt > now = ", true) // 不会结果显示, 因为条件为假
}
console.log("dt > now = ", dt > now)  // false

修改时间

使用 setXXX() 方法

代码语言:javascript
复制
const event = new Date('December 31, 1975 23:15:30 GMT-3:00');

console.log(event.getUTCFullYear());
// expected output: 1976

console.log(event.toUTCString());
// expected output: Thu, 01 Jan 1976 02:15:30 GMT

event.setUTCFullYear(1975);

console.log(event.toUTCString());
// expected output: Wed, 01 Jan 1975 02:15:30 GMT

相对时间操作

typescrtip 本身没有提供 时间对象 的 获取相对时间 的操作方法。可以通过 setXXX() 方法来时间

注意: setXXX() 返回会修改时间 对象本身

代码语言:javascript
复制
// 获取当前时间
const now = new Date()
console.log("now:::", now) // now::: 2021-08-25T10:07:43.932Z

// 修改时间
const delta = now.getFullYear() + 1
now.setFullYear(delta)

// console.log NOW <<<<
console.log("1 year laster, now:::", now);  // 1 year laster, now::: 2022-08-25T10:07:43.932Z

时间深拷贝

由于 setXXX() 是会修改原数据的, 那么一些时候, 就需要用到时间的深拷贝。核心思想就是通过 序列化/反序列化 完成一个 全新时间对象 的创建, 当然,其字面值是相同的。

代码语言:javascript
复制
// 深度拷贝
const now2 = new Date(now.toJSON())

console.log(now2, now) // 2022-08-25T10:24:31.700Z 2022-08-25T10:24:31.700Z

console.log(ow2 == now)  // false 时间对象对比
console.log(now2 >= now)  // true 时间对象对比
console.log(now.toJSON() === now2.toJSON()) // true 字面值对比

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 熊猫云原生Go 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建时间对象
  • 时间操作
    • 获取时间对象的属性值
      • 时间对象转字符串
        • toISOString()
        • toJSON()
      • 时间对象比较
        • 修改时间
          • 相对时间操作
          • 时间深拷贝
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档