gpt4 book ai didi

ios - NSComparisonResult 在晚上 10 点及以上未按预期工作

转载 作者:行者123 更新时间:2023-11-28 12:52:02 25 4
gpt4 key购买 nike

我需要在 Swift 中比较两次并使用 NSComparisonResult 我可以获得正确的结果,直到晚上 10 点到晚上 11:59 之间的时间。这些时间显示相反的结果。任何人都知道这是什么问题?下面是示例代码和场景。下午 10:30:00 是示例测试时间,但您可以随时进行测试。

// For test, Current time 10:30:00 PM
let currentTime = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .NoStyle, timeStyle: .LongStyle)

let closeTimeCompareResult: NSComparisonResult = currentTime.compare("10:00:00 PM EDT")
print("DinnerClose: \(closeTimeCompareResult.rawValue)")
// Expected result is -1 but, getting as 1

// It works perfect until 9:59:59 PM
let closeTimeCompareResult9: NSComparisonResult = currentTime.compare("9:00:00 PM EDT")
print("DinnerClose: \(closeTimeCompareResult9.rawValue)")
// As expected result is -1

最佳答案

您正在执行字符串比较。因此,您正在比较这两个字符串,例如:

10:00:00 PM EDT
9:00:00 PM EDT

字符串比较比较每个字符串的相应字符,从每个字符串的第一个字符开始。 “10:00:00 PM EDT”的第一个字符是“1”“9:00:00 PM EDT”的第一个字符code> 是 "9"。在 Unicode 和 ASCII 中,"9" 是代码点 57,"1" 是代码点 49。因为 57 > 49,"9"> "1",以及 “9:00:00 PM EDT”>“10:00:00 PM EDT”

您可能想从输入的日期中提取小时、分钟和秒,然后比较它们的数值。如果您已使用 Swift 2.2 升级到 Xcode 7.3,那么您可以使用 tuple comparison像这样:

let date = NSDate()
let components = NSCalendar.currentCalendar().components([.Hour, .Minute, .Second], fromDate: date)
let hms = (components.hour, components.minute, components.second)
if hms >= (21, 0, 0) && hms < (22, 30, 0) {
print("\(date) is between 9 PM and 10:30 PM in the system's time zone.")
}

关于ios - NSComparisonResult 在晚上 10 点及以上未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com