質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

166閲覧

[swift][xcode] 選択した時間と現在の時間が同じにしたい。

isekiryu

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/12/28 04:29

前提・実現したいこと

datePicerで時間を設定して、設定した時間になったら、タイマーが作動するアプリを作っています。
設定した時間と現在の時間が同じになったら、作動するようなものを作りたいと思っています。
アラームの設定などは、まだしていません。単純に同じになるようにしてる途中です。

発生している問題・エラーメッセージ

今のところ、エラーはありません。

該当のソースコード(ViewController)

// // ViewController.swift // AlarmAPP4 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() getNowTime2() _ = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(getNowTime2), userInfo: nil, repeats: true) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } @IBOutlet weak var myLabel: UILabel! @IBOutlet weak var datePicker: UIDatePicker! //設定した時間を代入する。 private var tempTime: String = "00:00:00" private var setTime : String = "00:00:00" @IBAction func datePicker(_ sender: AnyObject) { print("時間を決めたよ") let format = DateFormatter() format.dateFormat = "HH:mm:ss" tempTime = format.string(from: datePicker.date) print(tempTime) } @IBAction func Button(_ sender: AnyObject) { setTime = tempTime print("時間を設定したよ") } //現在時間の取得 @objc func getNowTime2()-> String { let date = NSDate() let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)! let component = calendar.components([ .hour, .minute, .second ], from: date as Date) let hour = String(format: "%02d", component.hour!) let min = String(format: "%02d", component.minute!) let sec = String(format: "%02d", component.second!) let nowTime2 = (String(hour) + ":" + String(min) + ":" + String(sec)) myLabel.text = nowTime2 return nowTime2 } func myAlarm(str: String) { let str = getNowTime2() // もし現在時刻が設定時刻と一緒なら if str == setTime{ print("時間になったよ") } else { print("まだ!") } } }

試したこと

色々なサイトを調べてみて、現在時間の取得して、それをテキストに表示することができました。
そして、datePickerで時間を決めると、時間を設定できました。

現在時間と設定した時間が同じになったら、アラームがなるアプリを作っています。

補足情報(FW/ツールのバージョンなど)

時間の設定の仕方がことなっている。

今のところこれが原因ではないかと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MasakiHori

2020/12/28 04:59

なぜ内部データの時間を文字列で持とうとするのかよくわかりません。 Dateを使う方が100万倍簡単ですよ。 あと、アラームは「同じ」で比べると問題が発生しやすいので、その時刻を「同じまたは過ぎた」で判定したほうが良いです。
isekiryu

2020/12/28 06:52

文字列にする理由は、ラベルに現在の時間を表示したいからです。 Dateを使うと現在の時間を取得できることを確認しました。 その上で、セットした時間以降になると、アラームがなるようにしたいです。
MasakiHori

2020/12/28 07:11

内部で利用する値とユーザーに見せる値を同じにする必要はありません。 内部データは計算しやすい値を利用し、ユーザーに表示するときにそれをユーザーが見やすい形に変換すればいいだけです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問