将小时从 12 小时制转换为 24 小时制 Swift 并保存为整数

Convert hours form 12 hour time to 24 hour time Swift and save as an integer

我想将整数小时变量转换为 24 小时制(例如,如果是 01:05:13 下午,小时将保存为 13,分钟将保存为 5 ,秒数将保存为 13),这样我可以稍后在我的代码中使用它进行一些数学运算,以找出我正在使用的计划应用程序的一些差异。这是我的第一个应用程序,我在其他任何地方都找不到答案,所以感谢您的帮助!这段代码的另一种工作方式是从一天开始以秒为单位获取数量,如果有人知道如何做到这一点,我们将不胜感激! 这是我获取时间并将其保存为小时、秒和分钟的三个不同整数的函数:

@IBAction func setTime() {

    var date = NSDate()
    //pickTimes()
    var calendar = NSCalendar.current
    calendar.timeZone = TimeZone(identifier: "UTC")!
    var currentHour = calendar.component(.hour, from: date as Date) + 5
    let currentMinutes = calendar.component(.minute, from: date as Date)
    let currentSeconds = calendar.component(.second, from: date as Date)
    timeText.text = ("\(currentHour):\(currentMinutes):\(currentSeconds)")
}
  1. calendar.component(.hour, from: someDate) 已经为您提供了一天中的 24 小时时间,因此无需执行其他操作即可解决您的问题。
  2. 不确定为什么要将 5 添加到小时。您将时区设置为 UTC,因此日期将被视为 UTC 时区。然后将 5 添加到该结果。这有点奇怪。如果您只想要用户区域设置时区中的当前小时,请不要更改日历的时区并且不要将 5 添加到小时。
  3. 不要使用 NSDateNSCalendar。这是Swift。使用 DateCalendar.

更新代码:

@IBAction func setTime() {
    var date = Date()
    //pickTimes()
    var calendar = Calendar.current
    var currentHour = calendar.component(.hour, from: date)
    let currentMinutes = calendar.component(.minute, from: date)
    let currentSeconds = calendar.component(.second, from: date)
    timeText.text = ("\(currentHour):\(currentMinutes):\(currentSeconds)")
}

但是使用 DateFormatter 并将 timeStyle 设置为 .medium 或者 .long 并将 Date() 格式化为字符串会更简单。这将给出一个正确本地化的时间字符串。