2016-09-27 82 views
0

我想显示从滑块到标签的时间。所以我必须转换价值并获得当天的时间,就像00:00 am/pm一样。 所以我需要一个步进器如何打印所有5个步骤像(5,10,15,20,25 .... 50,55) 因此,这底部的代码不会运行良好,有任何人更好的方式来做那个?获取12小时上午/下午时间

我有尝试,但它成为当我划块(ZB一个错误:当it's上午8:00,我块到7:55 AM它来为第一上午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!))" 
} 

Thank's用于帮助:)

+0

Double(sender.value)的示例值是什么? –

回答

2

我觉得有一个在你的方法为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: http://stackoverflow.com/questions/27922406/round-double-to-closest-10-swift 
private func roundToFives(x : Double) -> Int { 
    return 5 * Int(round(x/5.0)) 
} 
相关问题