Go語言將秒轉換為具體的時間

2020-07-16 10:05:08
在本例中,使用一個數值表示時間中的“秒”值,然後使用 resolveTime() 函數將傳入的秒數轉換為天、小時和分鐘等時間單位。

【範例】將秒解析為時間單位:
package main

import "fmt"

const (
    // 定義每分鐘的秒數
    SecondsPerMinute = 60

    // 定義每小時的秒數
    SecondsPerHour = SecondsPerMinute * 60

    // 定義每天的秒數
    SecondsPerDay = SecondsPerHour * 24
)

// 將傳入的“秒”解析為3種時間單位
func resolveTime(seconds int) (day int, hour int, minute int) {

    day = seconds / SecondsPerDay
    hour = seconds / SecondsPerHour
    minute = seconds / SecondsPerMinute

    return
}

func main() {

    // 將返回值作為列印引數
    fmt.Println(resolveTime(1000))

    // 只獲取訊息和分鐘
    _, hour, minute := resolveTime(18000)
    fmt.Println(hour, minute)

    // 只獲取天
    day, _, _ := resolveTime(90000)
    fmt.Println(day)
}
程式碼輸出結果:

0 0 16
5 300
1

程式碼說明如下:
  • 第 7 行,定義每分鐘的秒數。
  • 第 10 行,定義每小時的秒數,SecondsPerHour 常數值會在編譯期間計算出結果。
  • 第 13 行,定義每天的秒數。
  • 第 17 行,定義 resolveTime() 函數,根據輸入的秒數,返回 3 個整型值,含義分別是秒數對應的天數、小時數和分鐘數(取整)。
  • 第 29 行中,給定 1000 秒,對應是 16(16.6667 取整)分鐘的秒數,resolveTime() 函數返回的 3 個變數會傳遞給 fmt.Println() 函數進行列印,因為 fmt.Println() 使用了可變引數,可以接收不定量的引數。
  • 第 32 行,將 resolveTime() 函數中的 3 個返回值使用變數接收,但是第一個返回引數使用匿名函數接收,表示忽略這個變數。
  • 第 36 行,忽略後兩個返回值,只使用第一個返回值。