2016-09-27 18 views
0

スライダからラベルまでの時間を表示したい。だから私は値を変換し、00:00 am/pmのようにそれに現在の日の時間を取得する必要があります。 私はステッパーを必要とします(5,10,15,20,25 .... 50,55)のように5つのステップをすべて印刷します このコードは実行しないでください。誰にも良い方法がありますそれを作る?12時間AM/PM時間を得る

私はそれを試していますが、それは私が(ZBをバックスライダ誤差となる:。it's午前8時から、私はそれが最初の午前7時に来ています戻って7時55分までスライダー

ここでは、コードは次のようになります。

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)) 
} 
関連する問題