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

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

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

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

Q&A

解決済

1回答

1362閲覧

Swift カウントダウンタイマーの表示変更

ataru2222

総合スコア272

Swift

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

0グッド

0クリップ

投稿2019/07/14 08:02

こちらの記事を参考にカウントダウンタイマーを作りました。
https://qiita.com/mcz9mm/items/0d755cdac471910c6f61

イメージ説明

//設定したカウントダウンの秒数を返してくれます
func getXmaxTimeInterval() -> Int {
guard let xmas = calendar.date(from: DateComponents(year: 2019, month: 12, day: 24)) else { return 0}
let spanFromWow = xmas.timeIntervalSinceNow
return Int(floor(spanFromWow))
}

こちらのtimeInterValSinceNow関数を使ってカウントダウンの秒数を取得していると思われるのですが、これだと何万秒というあまりパッとこない数字にしかならないので、表示する方法を

「残り○○日、○○時間、○○分、○○秒」という表記にしたいと考えています。

取得した秒数を→日数、時間、分、秒に変換するにはどのような
コードを書いたら良いでしょうか?

また、直接日数、時間、分を取得する方法があればご教授ください。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

  • 取得した秒数を日数、時間、分、秒に変換

DateComponentsFormatterが利用できます.

Swift

1let formatter = DateComponentsFormatter() 2 3// 表示フォーマットを変更..positionalや.fullで表示が変わります. 4formatter.unitsStyle = .brief 5 6// 使用する単位 .minuteのみにすると232,071minのように出力されます. 7formatter.allowedUnits = [.year, .month, .day, .hour, .minute, .second] 8 9// 作成したformatterでtimeintervalをstringに変換します. 10print(formatter.string(from: spanFromNow)!) // →5mths 10days 3hr 44min 28sec 11 12

参考
【Swift】DateComponentsFormatterで「時間の量」を出力する

  • 直接日数、時間、分を取得する方法

すみません.あまり良い方法が思いつきませんでした.
一応動きますが,もっと良い方法があると思います.

swift

1var dateFomatter = DateFormatter() 2// 例として日数のみ取得 3dateFomatter.dateFormat = "DD日" 4let targetDate = Date(timeIntervalSinceReferenceDate: spanFromNow) 5// 出力 6print(dateFomatter.string(from: targetDate)) // →162日

投稿2019/07/15 11:18

rcftdbeu

総合スコア167

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

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

ataru2222

2019/07/16 09:17

rcftdbeu様 できました。 だいぶ時間がかかってしまっていて すごく困っていたので助かりました(涙) 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問