1. ホーム
  2. ios

[解決済み] Swift - 整数から時間/分/秒への変換

2022-04-21 20:09:35

質問

の時間変換について、基本的な質問があります。 スウィフト .

時間/分/秒に変換したい整数があります。

Int = 27005 を与えると

7 Hours  30 Minutes 5 Seconds

PHP でこれを行う方法を知っていますが、残念ながら swift は PHP ではありません :-)。

swiftでこれを実現するためのヒントがあれば、素晴らしいことです。 よろしくお願いします。

どのように解決するのですか?

定義

func secondsToHoursMinutesSeconds(_ seconds: Int) -> (Int, Int, Int) {
    return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60)
}

使用方法

> secondsToHoursMinutesSeconds(27005)
(7,30,5)

または

let (h,m,s) = secondsToHoursMinutesSeconds(27005)

上記の関数は、Swiftのタプルを利用して、一度に3つの値を返します。 を使ってタプルを再構築します。 let (var, ...) の構文を使用するか、必要に応じて個々のタプルのメンバにアクセスすることができます。

実際に文字でプリントアウトする必要がある場合は Hours などの場合は、このようなものを使用します。

func printSecondsToHoursMinutesSeconds(_ seconds: Int) {
  let (h, m, s) = secondsToHoursMinutesSeconds(seconds)
  print ("\(h) Hours, \(m) Minutes, \(s) Seconds")
}

なお、上記の実装で secondsToHoursMinutesSeconds()Int 引数を使用します。 もし Double バージョンでは、返り値をどうするか決める必要があります。 (Int, Int, Double) または (Double, Double, Double) . などと試してみてはいかがでしょうか。

func secondsToHoursMinutesSeconds(seconds: Double) -> (Double, Double, Double) {
  let (hr,  minf) = modf(seconds / 3600)
  let (min, secf) = modf(60 * minf)
  return (hr, min, 60 * secf)
}