Swiftで時計表示の桁数が1桁の時と2桁の時の調整

# 時計表示の桁数が1桁の時と2桁の時

Swiftでデジタル時計を実装するとき、表示を見ていると桁数が1桁のときと2桁のときがあるのが判ります。0~9までの時間の時は一桁になってしまいます。これを、`0~9`の時は`00, 01,02 ...etc`みたいな感じにしたいと思いました。桁数を2桁に揃えるためには、時刻を取得したそれぞれの変数に対し、if文で`10`より小さい場合に、`"0"`の文字を付け加えて桁を揃えればよいです。

# 実行画面

今、時間の関係で秒のところしか、`01`となってませんが、分も、時も、こうしていきます



![スクリーンショット 2017-05-03 16.20.50.png](https://qiita-image-store.s3.amazonaws.com/0/135794/7e2ed19f-d56a-7cc2-b0ad-517fdc71d178.png)


# step1

### 時刻を取得する

```swift
         /*
         
         現在の詳細日時を取得する
         
         
         */
        print("現在の詳細日時を取得する")
        let date = Date()
        let calendar = Calendar.current
        
        let hour = calendar.component(.hour, from: date)
        let minutes = calendar.component(.minute, from: date)
        let seconds = calendar.component(.second, from: date)
        print("hours = \(hour):\(minutes):\(seconds)")
        
```

# step2

### IntをStringにキャスト

取得した時刻はIntなので、これでは、ラベルのテキストに入らないのでキャスト変換します。

```swift
 //ラベル
 WhatHour.text = String(hour)
 WhatMinute.text = String(minutes)
 WhatSeconds.text = String(seconds)
```

# step3

### if文で桁を制御

このままですと、前途にもあるように、1桁のときと2桁のときが発生してしまいます。これを、if文で制御して、ラベルに代入しているところを書き換えます

```if.swift

if (seconds < 10) {
            
            //グローバル変数
            Whatseconds = "0" + String(seconds)
            Whatminutes = "0" + String(minutes)
            Whathour = "0" + String(hour)
            
            print(Whatseconds!)
            
        }else{
            
            Whatseconds = String(seconds)
            Whatminutes = String(minutes)
            Whathour = String(hour)
            

            
        }
```

```label.swift


        WhatHour.text = Whathour!
        WhatMinute.text = Whatminutes!
        WhatSeconds.text = Whatseconds!


```

# 全ソース

```swift
import UIKit



var Whathour:String?
var Whatminutes:String?
var Whatseconds:String?


class ViewController: UIViewController {

    @IBOutlet weak var WhatHour: UILabel!
    @IBOutlet weak var WhatMinute: UILabel!
    @IBOutlet weak var WhatSeconds: UILabel!
    
    

    
    //Timerを定義
    var timer: Timer!
    
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        /*
         
         一秒ごとに処理を実行する
         
         
         */
        print("一秒ごとに処理を実行する")
        timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
        timer.fire()
        
    

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    
    
    /*
     
     一秒ごとに処理が実行される関数
     
     
     */
    func update(tm: Timer) {
        // do something
        
        
        
        
        
        /*
         
         現在の詳細日時を取得する
         
         
         */
        print("現在の詳細日時を取得する")
        let date = Date()
        let calendar = Calendar.current
        
        let hour = calendar.component(.hour, from: date)
        let minutes = calendar.component(.minute, from: date)
        let seconds = calendar.component(.second, from: date)
        print("hours = \(hour):\(minutes):\(seconds)")
        
           
        
        /*
         
         10より小さい場合に、「0」の文字を付け加えてラベルに代入
         
         
         */
    
        
        

        if (seconds < 10) {
            
            
            Whatseconds = "0" + String(seconds)
           
            
            
        }else{
            
            Whatseconds = String(seconds)
          
            

            
        }
        
        
        
        /*
         
         10より小さい場合に、「0」の文字を付け加えてラベルに代入
         
         
         */
        
        
        if (minutes < 10) {
            
            
     
            Whatminutes = "0" + String(minutes)
            
            
            
        }else{
            

            Whatminutes = String(minutes)
         
            
        
            
            /*
             
             10より小さい場合に、「0」の文字を付け加えてラベルに代入
             
             
             */
            
            
            
        }
        
        if (hour < 10) {
            
            
      
            Whathour = "0" + String(hour)
            
            print(Whatseconds!)
            
        }else{
            
          
            Whathour = String(hour)
            
            
            
        }
        
          print("labelに代入")       
          WhatHour.text = Whathour!
          WhatMinute.text = Whatminutes!
          WhatSeconds.text = Whatseconds!
    }
   }
```

# github

[swift3WhatTimeIsItNow](https://github.com/Ryosuke-Hujisawa/swift3WhatTimeIsItNow)

# 参考

[Swiftで時計表示の桁数が1桁の時と2桁の時の調整](http://off.tokyo/blog/2017/05/03/swift3-timer/)