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

step1

時刻を取得する

/*

         現在の詳細日時を取得する


         */
        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なので、これでは、ラベルのテキストに入らないのでキャスト変換します。

 //ラベル
 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!


全ソース

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

藤沢瞭介(Ryosuke Hujisawa)
  • りょすけと申します。18歳からプログラミングをはじめ、今はフロントエンドでReactを書いたり、AIの勉強を頑張っています。off.tokyoでは、ハイテクやガジェット、それからプログラミングに関する情報まで、エンジニアに役立つ情報を日々発信しています!

未整理記事