Swift4 systemUptimeメソッド


Swift4
起動している時間の取得方法を教えていただき、本当にありがとうございます。実際にコードを書いてみると、マイナスになっていたり、とんでもない数値になっています。  
質問1.systemUptimeの数値は、スリープ時を含めているのでしょうか？電源を落としていればカウントされないのでしょうか？詳しくわからないので教えていただきたいです。  
質問2.教えたいただいたコードで計算式  
day = uptime / 86400  
hour = (uptime - (day ＊ 86400)) / 3600  
minute = (uptime - (day ＊ 86400 + hour ＊ 3600)) / 60  
second = (uptime - (day ＊ 86400 + hour ＊ 3600 + minute ＊ 60))  
としたのですが、表示されたのはマイナスがついたりとんでもなく大きい数値でした。間違えているのでしょうか。お教えください。




質問の内容変更に伴い修正です。

まず、`ProcessInfo().systemUptime`が返す値は、`TimeInterval`という`Duble`の別名型で、systemが起動してから現在までの秒数を`Double`型で返します。  
なので、この数字を直接操作すれば良いです。

秒数を日、時間、分、秒にするのは割り算と引き算なので省略しますが、それぞれを計算し、  
日を`day`、時間を`hour`、分を`minute`、秒を`second`という変数に代入が終わったとして、  
それぞれを個別に文字列にしたいのであれば、`String(day)`の様に、数字型を`String()`の引数にすることで可能です。  
また、決まった形にフォーマットしたいのであれば、  
`String(format:"%d日, %d時間 %d分 %d秒", day, hour, minute, second)`  
や  
`String(format:%d日, %d:%d:%d", day, hour, minute, second)`  
とすることで全体を一つの文字列にすることも可能です。

あとは、日、時、分、秒でそれぞれ別なラベルを配置して、それぞれに`.stringValue =`で代入するか、  
下のサンプルのように一つのラベルを配置して、そこに全体を一つの文字列に下文字列を`.stringValue
=`で代入すれば、ラベルの表示が代入した文字になると思います。

（LabelがIBOutletでView上のラベルとOutlet接続されているのが前提で）

[code]

    class UptimeLabelViewController: UIViewController {
        @IBOutlet weak uptimeLabel:UILabel? // UptimeLabelViewのLabelとOutlet接続する
                                            // 日、時、分を別なラベルにするならラベルとOutlet変数を必要個用意する
    
        override viewDidLoad() {
            let uptime:TimeInterval = ProcessInfo().systemUptime
              // 時間の計算方法は省略するが、uptimeを元に、day, hour, minute,
              // secondという変数に必要な値がセットされている事
            var uptimeString:String
            if (day != 0) {
                uptimeString = String(format:"%d日 %d時間 %d分 %d秒", day, hour, minute, second)
            } else {  // 0日と表示されるのは格好良くないので
                uptimeString = String(format:"%d時間 %d分 %d秒", hour, minute, second)
            } // end if day is present or not
            uptimeLabel.text = uptimeString
        } // end override view didLoad
    } // end class UptimeLabelView
    
[/code]

こんな感じでいかがでしょうか。

