获取 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))
}
我想显示从 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))
}