在 Swift 中添加和减去时间

2023-11-25

我用伪代码编写了其中一些内容,因为我不知道它的语法。我想要timeLeftLabel.text反映 6 小时结束前还剩多少小时、分钟和秒。我最大的问题是我不知道如何加减时间。谁能帮我?

var timer = NSTimer()

func timerResults() {
    let theDate = NSDate()
    var endTime = theDate //+ 6 hours
    let timeLeft = endTime //- theDate
    timeLeftLabel.text = "\(timeLeft)"
}

@IBOutlet weak var timeLeftLabel: UILabel!
@IBAction func IBbtnUpdateTap(sender: UIButton){

timer = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: Selector("timerResults"), userInfo: nil, repeats: true)

}

假设您的部署目标是 iOS 8.0 或更高版本,您应该使用NSDateComponentsFormatter格式化你的字符串。你想要这样的东西:

class MyViewController : UIViewController {

    @IBOutlet weak var timeLeftLabel: UILabel!

    var targetDate: NSDate?
    var labelUpdateTimer: NSTimer?
    var timeLeftFormatter: NSDateComponentsFormatter?

    @IBAction func startTimerButtonWasTapped() {
        targetDate = NSDate(timeIntervalSinceNow: 6 * 60 * 60)
        labelUpdateTimer = NSTimer.scheduledTimerWithTimeInterval(1,
            target: self, selector: "labelUpdateTimerDidFire:", userInfo: nil, repeats: true)
        timeLeftFormatter = NSDateComponentsFormatter()
        timeLeftFormatter?.unitsStyle = .Abbreviated // gives e.g. "1h 20m 34s"
            // You might prefer .Positional, which gives e.g. "1:20:34"
        timeLeftFormatter?.allowedUnits = [ .Hour, .Minute, .Second ]

        labelUpdateTimerDidFire(labelUpdateTimer!)
    }

    @objc func labelUpdateTimerDidFire(timer: NSTimer) {
        let now = NSDate()
        timeLeftLabel.text = timeLeftFormatter!.stringFromDate(now,
            toDate: targetDate!)
        if now.compare(targetDate!) != NSComparisonResult.OrderedAscending {
            print("times up!")
            labelUpdateTimer?.invalidate()
        }
    }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Swift 中添加和减去时间 的相关文章

  • UpdatedTransactions(transactionState == .restored) 与 paymentQueueRestoreCompletedTransactionsFinished

    正如标题所描述的 实际有什么不同 如果我有这个 func paymentQueue queue SKPaymentQueue updatedTransactions transactions SKPaymentTransaction for
  • 使用 OSX 10.9 和 Xcode 6.1.1 + 自定义输入视图作为 Swift 中文本字段的键盘

    加载自定义输入视图键盘后 我在连接按钮时遇到问题 我的主屏幕是故事板 我的自定义视图是 xib 输入视图是一个 nib 文件所有者指向它的 swift 类 我正在使用另一个视图控制器中的代码加载输入视图 extension UIView c
  • 你能以编程方式调用 Siri 吗?

    我想创建一个 UITextView 的子类 其中包含一个自定义按钮来调用 Siri 用于其语音到文本的文本输入 这可能吗 我不介意是否显示键盘 我只想提供自己的按钮来打开 Siri 不幸的是 你不能这样做 从 iOS 6 0 开始 使用 S
  • 为什么在 Quick 单元测试中会多次调用 before- 和 afterEach 块?

    我编写了一个测试用例 其中包含一些示例组 包括beforeEach and afterEach 我期望每个beforeEach and afterEach每个都会被调用一次it 唉 对于一个人来说it the beforeEach and
  • 弹出窗口不指向按钮

    我有一个与 iPhone 和 iPad 布局兼容的应用程序 对于 iPhone 布局 我为 iPad 创建了 Action Sheet 和 Pop over 问题是弹出窗口的箭头没有指向我单击的按钮 下面是我的代码 let actionSh
  • 与无效的迭代器/索引一起使用时,Swift 集合的安全性如何?

    我在 swift stdlib 参考中没有看到很多信息 例如 Dictionary 说某些方法 如删除 将使索引无效 但仅此而已 对于一种自称为 安全 的语言 它需要一个解决经典 C 问题的解决方案 获取指向向量中元素的指针 然后添加更多元
  • iOS 7 仅横向应用程序无法访问照片库

    我有一个仅限风景的应用程序 每当我访问照片库时 应用程序就会崩溃 因为UIImagePickerViewController正在尝试以纵向模式加载 应用程序在 iOS 5 和 6 中运行良好 我收到以下错误 由于未捕获的异常而终止应用程序
  • 是否可以“重新设计”IOS 日期选择器?

    我需要一个自定义日期选择器 本质上只是想删除 IOS 版本中的图形 但保留 3 列日期滚动 是否需要从头开始重新构建 所有研究都表明是 或者是否可以仅禁用或交换图像 我自己还没有尝试过 但也许您可以在日期选择器上方添加一个 UIImageV
  • Swift 中的等效 android.content.BroadcastReceiver

    我想知道 Swift 中是否有等效的 android content BroadcastReceiver 我需要相同的处理程序 例如onReceive Context context Intent intent 有可能的 谢谢 Ysee 在
  • 在 iOS 中如何本地化 UIDatePicker 中的月份文本,是否可能?

    我进行搜索 到目前为止我看到 UIDatePicker 正在处理设备的本地化 我有具有内部本地化的应用程序 我需要根据我的内部本地化更改月份文本 据我所知 这似乎是不可能的 我必须制作自己的自定义选择器 有没有办法在没有自定义日期选择器的情
  • @testable 导入和桥接标头不能同时工作

    我的框架项目有测试目标 其中包括 Obj C 测试 使用 testable import 进行 Swift 测试以测试内部类和函数 一些用 Obj C 编写的用于我的测试的实用程序 应该在 1 和 2 中使用 由于我想使用 Obj C ut
  • 从故事板向 UILabel 属性字符串添加下划线失败

    从故事板中我选择有问题的 UILabel 然后在属性检查器 gt 标签 gt 我选择 属性 同样在属性检查器 gt 标签 gt 文本 gt 我选择内容 然后我单击字体图标并选择下划线 基本上 我从弹出的 字体 窗口中选择的任何更改都不会生效
  • 使用 Accelerate 框架 32 位与 64 位进行 swift 矩阵乘法

    我正在尝试使用 Accelerate 框架在 Swift 中进行矩阵乘法 使用了vDSP mmulD 这在 iPhone6 6 plus iPad Air 模拟器 所有 64 位架构 中完美运行 但不适用于任何 32 位架构设备 看来 32
  • 图像持久化和延迟加载与 Dispatch_Async 的冲突

    我正在开发一个提要阅读器 我通过使用 nsxmlparser 解析 rss 提要来完成它 我还有从 CDATA 块中获取的缩略图对象 void parser NSXMLParser parser foundCDATA NSData CDAT
  • 如何检索所有连接的蓝牙外围设备

    我正在尝试获取所有连接到 iPhone 的外围设备的列表 我已连接 Bose Soundlink 但它没有显示在我的应用程序中 我不知道 UUID 所以传递 因为这应该得到我想的一切 func centralManagerDidUpdate
  • 规划带有透明覆盖图像的科尔多瓦相机插件

    我正在编写和应用程序 需要在相机上显示透明图像 例如作为构图指南 该应用程序必须至少在 iOS 和 Android 上发布 到目前为止 我已经找到了一个具有功能 iOS 源的插件 okstate plugin camera overlay
  • 如何在构建时自动重置 iPhone 模拟器

    将多个 JSON 文件从应用程序包根目录移动到目录结构内 也在应用程序包中 后 应用程序继续运行 就像文件保留在之前的位置一样 经过一番绞尽脑汁并进行了一次干净的构建后 我记得必须清除 iPhone 模拟器才能删除旧位置中的这些文件 如果能
  • 如何为应用程序加载器创建上传文件?

    当我使用应用程序加载器时 它要求我 选择 要上传的文件 如果我理解正确 它应该是我在应用程序包的 产品 下看到的 appName app 文件 我右键单击它并选择 在 Finder 中显示 以访问库中的特定文件 那么我应该将其压缩 ZIP
  • 在滚动视图内的 ImageView 中裁剪缩放图像

    我已经做了很多努力 最后我需要帮助 谢谢 目标 1 如何将 imageView 放入 ScrollView 中 2 我如何在scrollView内部裁剪缩放图像 我在滚动视图中有一个 imageView 我想要缩放后裁剪图像 该图像显示在滚
  • 当Text超过Height时如何增加UITextView的高度

    我有一个 UITextView 当我在 5 6 行后输入数据时 数据正在向上滚动并且看不到 当输入的文本超过高度时 是否有任何属性可以用来增加 UITextView 的高度 请建议大家 使用此代码使 UITextView 的高度与其内部内容

随机推荐

  • 在 Django 模型中排序多对多关系

    假设 Django 模型中有多对多关系 例如 class GroceryList models Model items models ManyToManyField GroceryItem related name in lists cla
  • Rust 中如何在 future 和 Stream 之间进行选择?

    我刚刚开始在 Rust 中尝试 futures tokio 我可以仅使用 future 或仅使用流来完成非常基本的事情 我想知道你如何在未来和流之间进行选择 如何将 tokio 文档中的玩具问题扩展到使用tokio timer Timer进
  • 在JS内部动态加载JS[重复]

    这个问题在这里已经有答案了 我有一个动态网页 我需要在其中导入外部 JS 文件 在IF条件 在另一个 javascript 文件中 我试图寻找可行的解决方案 但没有成功 我尝试使用以下方法将 JS 文件加载到 DOMdocument cre
  • c# RawPrinterHelper 将数据发送到打印机,打印机假脱机并状态“已打印”但实际上并不打印

    我正在使用 RawPrinterHelper 类 如下所述 https support microsoft com en us help 322091 how to send raw data to a printer by using v
  • Firefox 上 Tumblr 的 Base64 字体编码

    我正在开发一个 Tumblr 主题 并且想要使用我在所有浏览器上都有的字体 由于 Firefox 不允许对其他域的 css 字体进行 http 请求 因此该字体目前无法在 Firefox 中使用 但可以在使用标准 font face 语法的
  • 您放弃 MVVM 而采用基于 UserControl 的 WPF 架构有何体验?

    我们基于以下内容构建了一个大型应用程序复合应用程序库 and MVVM using 基础设施学控制 为了节省时间并使申请更加直接 我们废除了 MVVM 要求 我们现在没有 Presenter 或 ViewModel 我们的 View 已成为
  • 为什么使用 GCC 时库链接器标志有时必须放在最后?

    我正在编写一个使用 librt 的小型 C 程序 让我感到非常惊讶的是 如果我将链接标志放在开头而不是结尾 程序将无法编译 目前 为了编译程序 我这样做 gcc o prog prog c lrt std gnu99 如果我执行以下操作 将
  • 如何获取SDCARD上存储的图片的Uri?

    我需要获取存储在 SDCARD 上的图像的 URI 当我想获取存储在可绘制对象上的图像的 Uri 时 我使用它并且效果完美 i putExtra Intent EXTRA STREAM Uri parse android resource
  • jquery Draggable +sortable 与自定义 html 的放置事件?

    将元素放置在可放置区域时更改 html 像这样的东西 http the stickman com files jquery draggable sortable html 但是当我删除元素时 会更改放置的 html 其他示例 我有 2 个列
  • 查看复杂 OCaml 代码中的推断类型

    我是一名 OCaml 新手 正在使用一些我没有编写的相当复杂 至少对我来说 的 OCaml 代码 如果我可以看到某些值的推断类型 那么对理解它会有很大帮助 就像我可以通过将鼠标悬停在任何值上来使用 F 和 Visual Studio 一样
  • Angularjs:控制器被多次调用

    由于某种原因 当我在资源 1 和资源 2 之间切换时 我的控制器被双重调用 这是代码 索引 html
  • EditText在设备旋转后自动保存值

    我在 Android Studio 中创建了一个示例应用程序来了解 Android 应用程序的生命周期 我知道方向改变会完全重新启动活动 即再次调用 OnCreate 方法 据我所知 方向改变应该会破坏上下文并在设备旋转后显示空白文本 但不
  • 如何将类属性声明为类名的联合?

    我正在阅读电子表格寻找不同的结构 当我使用 Moose 尝试以下操作时 它似乎做了我想要的事情 我可以创建不同类型的对象 将其分配给找到的成员 并转储 Cell 实例以供审查 package Cell use Moose use Moose
  • Grunt - 监视文件并在文件更改时进行 SFTP

    我正在尝试自动上传 css文件 当它从 Sass 编译时 这就是我的Gruntfile js module exports function grunt Project configuration grunt initConfig pkg
  • 如何调用系统命令并捕获其输出?

    有没有办法调用系统命令 例如ls or fuser在铁锈中 捕获它的输出怎么样 std process Command允许这样做 有多种方法可以生成子进程并在计算机上执行任意命令 spawn 运行程序并返回一个包含详细信息的值 output
  • 无法解析指针:/definitions/Error-ModelName

    我是 Swagger io 的新手 也是 Spring Fox 的新手 我遇到的问题是 由于某种原因 一个对象没有正确引用其模型 The error in the UI 错误是因为 JSON 中的结果如下 schema ref defini
  • Android 真的没有 wchar_t 吗?

    我建立了一个简单的方法 如下所示 wchar t buf 1024 void logDebugInfo wchar t fmt va list args va start args fmt vswprintf buf sizeof buf
  • 使用 JAX-RS 创建 RESTful Web 服务并将其部署到 tomcat

    我正在尝试使用 JAX RS 创建和部署 RESTful Web 服务并将其部署到 tomcat 我不想使用任何 IDE 在 Tomcat 中 我在 webapps 中有以下目录结构 notifire WEB INF gt web xml
  • 显示所有表的所有数据

    我想显示数据库中的所有数据而不编写select对于每个表 我该怎么做 我不想这样做 select from Customer select from Employee select 我正在将 TSQL 与 MSSQL Server 一起使用
  • 在 Swift 中添加和减去时间

    我用伪代码编写了其中一些内容 因为我不知道它的语法 我想要timeLeftLabel text反映 6 小时结束前还剩多少小时 分钟和秒 我最大的问题是我不知道如何加减时间 谁能帮我 var timer NSTimer func timer