如何在 JavaScript 中从日期中减去秒数

如何在 JavaScript 中从日期中减去秒数

让我们学习如何轻松地从 a 中减去任意秒数 日期 JavaScript 中的对象。

1. 日期 setSeconds() 和 getSeconds() 方法

从 a 中减去秒 日期

  1. 调用 获取秒() 上的方法 日期 获取秒数。
  2. 减去秒数。
  3. 将减法的结果传递给 setSeconds() 方法。

例如:

 函数减秒(日期,秒){  
 date.setSeconds(date.getSeconds() - 秒); 归期;  
 } // 2022 年 7 月 10 日下午 5:35:40  
 const date = new Date('2022-07-10T17:35:40.000Z'); const newDate = subtractSeconds(date, 10); // 2022 年 7 月 10 日下午 5:35:30  
 控制台.log(newDate); // 2022-07-10T17:35:30.000Z

我们的 减秒() 函数需要一个 日期 对象和作为参数减去的秒数。它返回一个新的 日期 减去秒数的对象。

日期 获取秒() 方法返回一个介于 0 59 表示特定的秒数 日期 .

日期 setSeconds() 方法设置 a 的秒数 日期 到指定的号码。

如果我们减去的秒数会减少分、时、日、月或年 日期 目的, 设置小时() 自动更新 日期 反映这一点的信息。

 函数减秒(日期,秒){  
 date.setSeconds(date.getSeconds() - 秒); 归期;  
 } // 2022 年 7 月 10 日下午 5:20:00  
 const date = new Date('2022-07-10T17:20:00.000Z'); 常量新日期 = 减秒(日期,130); // 2022 年 7 月 10 日下午 5:17:50  
 控制台.log(newDate); // 2022-07-10T17:17:50.000Z

在本例中,减少 日期 经过 130 减少分钟 3 并将秒数设置为 50 .

避免副作用

setSeconds() 方法改变了 日期 它被调用的对象。这给我们带来了一个副作用 减秒() 功能。为了避免修改传递的,并创建一个纯函数,复制 日期 并打电话 setSeconds() 在这个副本上,而不是在原件上。

 函数减秒(日期,秒){  
 // 使用 Date() 构造函数进行复制  
 常量 dateCopy = 新日期(日期); dateCopy.setSeconds(date.getSeconds() - 秒); 返回日期复制;  
 } // 2022 年 7 月 10 日下午 5:35:40  
 const date = new Date('2022-07-10T17:35:40.000Z'); const newDate = subtractSeconds(date, 10); // 2022 年 7 月 10 日下午 5:35:30  
 控制台.log(newDate); // 2022-07-10T17:35:30.000Z //原始未修改  
 控制台日志(日期); // 2022-07-10T17:35:40.000Z

小费: 不修改外部状态的函数(即纯函数)往往更容易预测和推理,因为它们总是为特定输入提供相同的输出。这使得限制代码中副作用的数量成为一种很好的做法。

2. date-fns subSeconds() 函数

或者,我们可以使用 子秒() 从函数 日期-fns NPM 包快速从 日期 .它的工作原理类似于我们的纯 减秒() 功能。

 从“日期-fns”导入{ subSeconds }; // 2022 年 7 月 10 日下午 5:35:40  
 const date = new Date('2022-07-10T17:35:40.000Z'); const newDate = subSeconds(date, 10); // 2022 年 7 月 10 日下午 5:35:30  
 控制台.log(newDate); // 2022-07-10T17:35:30.000Z //原始未修改  
 控制台日志(日期); // 2022-07-10T17:35:40.000Z

最初发表于 编码beautydev.com

JavaScript 所做的每一件疯狂的事

关于 JavaScript 的细微警告和鲜为人知的部分的迷人指南。

注册 并立即获得免费副本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11762/01110317

posted @   哈哈哈来了啊啊啊  阅读(1445)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示