获取 12 小时 am/pm 时间

Get 12h hours am/pm Time

我想显示从 Slider 到 Label 的时间。所以我必须转换该值并在其上获取当前日期时间,如 00:00 am/pm。 所以我需要一个步进器如何打印所有 5 个步骤,如 (5,10,15,20,25....50,55) 所以底部的这段代码并不 运行 好,有没有人有更好的方法来做到这一点?

我已经尝试过了,但是当我向后滑动时它变成了一个错误(zb:当它是 8:00 时我滑动回到 7:55 它是第一个 7:00 上午

代码如下:

   func valueChange(_ sender: CircleSlider) {

    let countmin = Int(Double(sender.value) * 14.4)
    var hour = countmin / 60
    let mins = countmin - (hour*60)


    if hour >= 12 {
        hour -= 12
        Am.text = "Pm"
    } else {
        Am.text = "Am"
    }



    hours = hour


    let i = String(mins) 
    switch i {
        case "Nil":
            minutes = 00
        case "0":
            minutes = 00
        case "5":
            minutes = 05
        case "10":
            minutes = 10
        case "15":
            minutes = 15
        case "25":
            minutes = 25
        case "30":
            minutes = 30
        case "35":
            minutes = 35
        case "40":
            minutes = 40
        case "45":
            minutes = 45
        case "50":
            minutes = 50
        case "55":
            minutes = 55
        case "60":
            minutes = 60
        default:
            break
    }


    self.circleTime.text = "\(String(format: "%02d", hours!)):\(String(format: "%02d", minutes!))"
}

感谢您的帮助:)

我认为您的 7:56、7:57、7:58、7:59 方法存在问题(截断效果不佳)。此代码应该适合您:

func valueChange(_ sender: CircleSlider) {
    let countmin = Int(Double(sender.value) * 14.4)

    var hour = countmin / 60
    let mins = countmin - (hour * 60)

    if hour >= 12 {
        hour -= 12
        Am = "Pm"
    } else {
        Am = "Am"
    }

    hours = hour
    minutes = roundToFives(Double(mins))

    // This fixes when you have hh:60. For instance, it fixes 7:60 to 8:00
    if minutes == 60 {
        hours = hour + 1
        minutes = 0
    }

    self.circleTime.text = "\(String(format: "%02d", hours!)):\(String(format: "%02d", minutes!))"
}

// idea of this method comes from: 
private func roundToFives(x : Double) -> Int {
    return 5 * Int(round(x / 5.0))
}