LoginSignup
0
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-05-03

時計表示の桁数が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

参考

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

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0