在 Swift 中没有日期的情况下比较两次的最佳方法是什么

我想知道在您看来哪个是快速比较没有特定日期的两个不同时间的最佳方式

目前我一直在考虑以这种方式实现

  static func isClosingTime() -> Bool {
     let currentHour = Calendar.current.component(.hour, from: Date())
     let currentMinute = Calendar.current.component(.minute, from: Date())
     currentHour >= 19 && currentMinute <= 30
  }

我想知道是否有更好的方法

我接受所有关于干净正确代码的建议

基里尔 S。

从你的解释看来你

希望 isClosingTime 函数在当前时间大于 19:30 时返回“True”值

基于此,我可以建议这样做:

  • 将关闭时间作为Date对象
  • 将关闭时间日期对象与当前时间进行比较

像这样:

func isClosingTime(hour: Int, minute: Int) -> Bool {

    guard let closingTime = Calendar.current.date(bySettingHour: hour, minute: minute, second: 0, of: Date()) else {
        return false // could not establish closing time
    }

    return Date() >= closingTime
}

你称之为

isClosingTime(hour: 19, minute; 30)

我还将更新您需要处理关闭 _and_opening 时间的情况的答案。

func shouldBeOpen(from opening: (Int, Int), to closing: (Int, Int)) -> Bool {

    guard let openingTime = Calendar.current.date(bySettingHour: opening.0, minute: opening.1, second: 0, of: Date()),
          let closingTime = Calendar.current.date(bySettingHour: closing.0, minute: closing.1, second: 0, of: Date()) else {
        return false // could not establish closing time
    }

    return (openingTime ... closingTime).contains(Date())
}

例如:

shouldBeOpen(from: (9, 0), to: (19, 30))

这里唯一的限制是它工作1天,并且关闭时间应该>开放时间。但即使这样也可以处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

是否可以在没有Swift或Objective-C的情况下使用Go创建iOS应用?

如何在Swift中在没有代码重复的情况下实现具有相同内容的两个init?

Swift:在没有集合视图控制器的情况下实现集合视图

在Swift中声明标量值列表的最佳方法是什么

在iOS Swift中解析JSON格式的最佳方法是什么?

Swift 3:如何在没有多个if语句的情况下分配不同选项类型的变量?

弱者vs在Swift中没有。内部差异是什么?

在Swift中迭代日期范围最有效的方法是什么?

如何在Swift中没有参数的情况下调用Objective-C`initFoo`方法?

在没有IBOutlets的情况下以编程方式更新布局约束-Swift

我可以在没有服务器专用端口的情况下运行socketio swift吗

Swift替换TableViewCell中内容的最佳方法是什么

在C中没有日期的情况下比较时间(小时和秒)的最佳方法?

如何在没有Microsoft Azure用户的情况下使用Swift获得访问令牌?

如何在没有窗口的情况下使用Swift在macOS上检测Caps Lock状态?

在Swift中没有外部框架获取图像的最佳方法是什么?

在没有开销的情况下实现push_back的最佳方法是什么

在Swift 5中,比较两个闭包的指针的方法是什么?

在Swift中,将两个数组分配给字典的键/值的最佳方法是什么?

在没有NSTimer的情况下使Timer(swift)

如何在没有任何动态库的情况下编译swift?

如何在Swift中在没有协议的情况下构造泛型?

如何在没有唯一自动ID Firebase Swift的情况下进行附加

在 Swift 中创建相同视图的最佳方法是什么?

Swift 3:如何在没有可选的情况下从“Optional(Optional(stringValue))”中读取?

Swift4- 有什么方法可以在没有火力的情况下构建聊天应用程序

使用 Swift 在没有整页刷新的情况下更新 UITableViewCell 内的 UILabel

Swift 5 结果:XCTAssertEqual 在没有更多上下文的情况下是模棱两可的

在没有父密钥的情况下获取子“信息”的最佳方法是什么?