首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将毫秒添加到当前时间

问将毫秒添加到当前时间
EN

Stack Overflow用户
提问于 2021-05-29 15:29:32
回答 2查看 69关注 0票数 0

因此,我目前有一个正在播放的swift应用程序,它每30秒向服务器请求一次,似乎使服务器超载。

因为我们从iTunes API请求当前正在播放的歌曲的数据,所以我在想,如果iTunes API找到结果,我可能会限制请求。

使用trackTimeMillis,我可以将该trackTimeMillis添加到当前时间,如果不大于该时间,则不对服务器执行ping操作。如果大于最新曲目的ping服务器。

我在想,我需要将ping服务器的函数包装在

代码语言:javascript
复制
Calendar.current.dateComponents([.hour], from: Date(), to: Date()), diff > Date())+ trackTimeMillis {

但这是行不通的

基本上,我需要在当前日期()中添加日期,如果用户的当前时间戳( trackTimeMillis )大于Date() + trackTimeMillis,则允许请求。

EN

回答 2

Stack Overflow用户

发布于 2021-05-29 18:40:02

我真的不明白你想用你在问题中放的代码片段做什么。

关注如何将一些毫秒数添加到Date()中

Date的函数是addingTimeInterval(_:)

如果您需要添加特定的毫秒数来做日期,请使用以下命令:

代码语言:javascript
复制
newDate = Date().addingTimeInterval( Double(millis) / 1000)

编辑:

正如Matt所指出的,您可以更简单地通过编写

代码语言:javascript
复制
newDate = Date() + Double(millis) / 1000

因为有一个+操作符的覆盖,它接受一个Date和一个Double并返回一个Date。

这两个版本都向日期添加了一个包含指定秒数的Double。由于Double可以表示非常小的数字,也可以表示非常大的数字,因此您可以对任何Date进行从一秒的极小部分到几千年的范围内的加减值。

票数 2
EN

Stack Overflow用户

发布于 2021-05-30 01:46:36

一种更简单的替代方案。当我执行这样的任务时,我通常会存储前一个请求的Date,例如:

代码语言:javascript
复制
let lastRequestTime = Date()

然后只需检查已用时间:

代码语言:javascript
复制
if Date().timeIntervalSince(lastRequestTime) > 30 {
  ...
}

另一种选择是使用Timer。基本上,您可以安排一个在X秒后发送请求的Timer。如果您首先收到来自不同来源的响应,则只需取消Timer,如果请求已在运行,还可能取消该请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67748862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档