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

时间:2018-10-19 05:58:59

标签: swift swift3 nsdate

我想将我的变量(整数小时)转换为24小时制(例如,如果是01:05:13 PM,小时将被保存为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 个答案:

答案 0 :(得分:1)

  1. calendar.component(.hour, from: someDate)已经为您提供了24小时制中的一天时间,因此您无需采取其他任何措施来解决您的问题。
  2. 不确定为什么要在小时中加上5。您将时区设置为UTC,因此日期将被视为UTC时区。然后将5加到该结果。有点奇怪如果您只想在用户的语言环境时区中显示当前时间,请不要更改日历的时区,也不要在该时间中添加5
  3. 请勿使用NSDateNSCalendar。这是斯威夫特。使用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设置为字符串格式会更简单。这样会给出正确本地化的时间字符串。