Go語言時間與字串以及時間戳的相互轉換
阿新 • • 發佈:2021-12-01
1、時間與字串以及時間戳的相互轉換
-
Time型別---------->string型別
-
string型別---------->Time型別
-
Time型別---------->時間戳int64型別(秒)
-
時間戳int64型別(秒)---------->Time型別
package main import ( "fmt" "time" ) func main() { //獲取當前時間Time型別 now := time.Now() fmt.Println(fmt.Sprintf("當前時間(Time型別):%s", now)) //返回當前時間Time型別 //Time型別---------->string型別 strTime := now.Format("2006-01-02 15:04:05") fmt.Println(fmt.Sprintf("當前時間(string型別)(Time型別---------->string型別):%s", strTime)) //格式化時間為字串 //string型別---------->Time型別 loc, _ := time.LoadLocation("Local") //獲取當地時區 location, err := time.ParseInLocation("2006-01-02 15:04:05", "2021-11-30 19:21:35", loc) if err != nil { return } fmt.Printf("string型別(2021-11-30 19:21:35)---------->Time型別:%+v\n", location) //Time型別---------->時間戳(秒) unix := now.Unix() fmt.Printf("當前時間戳(int64型別)(Time型別---------->時間戳(秒)int64型別):%d\n", unix) //獲取時間戳,基於1970年1月1日,單位秒 //時間戳(秒)---------->Time型別 unixStr := time.Unix(1638271295, 0) fmt.Printf("時間戳(秒)2021-11-30 19:21:35|1638271295---------->Time型別:%s", unixStr) }
2、今天是幾月幾號周幾
package main import ( "fmt" "time" ) func main() { //獲取當前時間Time型別 now := time.Now() fmt.Println(fmt.Sprintf("當前時間(Time型別):%s", now)) //返回當前時間Time型別 day := now.Day() fmt.Printf("今天是幾號-->%d\n", day) fmt.Printf("本月是幾月-->%s\n", now.Month()) fmt.Printf("今天是周幾-->%s\n", now.Weekday()) }
3、時間的加法(獲取下週幾是幾月幾號)
思路舉例:
-
假設今天是週二,求下週三是幾月幾號?
-
求下週三是幾月幾號,則下週一到下週三就是3天(記錄為number)
-
今天是週二,則週二到這週末還剩餘7-2=5天(記錄為7 - weekday)
-
所以距離下週三就還剩餘7 - weekday + number天
-
所以用今天加上天數即可知道下週三是幾月幾號
-
package main import ( "fmt" "time" ) func main() { GetNextWeekNumber(time.Monday) //求下週一是幾月幾號 GetNextWeekNumber(time.Tuesday) //求下週二是幾月幾號 GetNextWeekNumber(time.Wednesday) //求下週三是幾月幾號 GetNextWeekNumber(time.Thursday) //求下週四是幾月幾號 GetNextWeekNumber(time.Friday) //求下週五是幾月幾號 GetNextWeekNumber(time.Saturday) //求下週六是幾月幾號 GetNextWeekNumber(time.Sunday) //求下週天是幾月幾號 GetNextWeekNumber(8) //求下週一是幾月幾號 (根據對7取餘數來計算) GetNextWeekNumber(9) //求下週二是幾月幾號 (根據對7取餘數來計算) GetNextWeekNumber(10) //求下週三是幾月幾號(根據對7取餘數來計算) //GetNextWeekNumber(-1) //求這週六是幾月幾號 //GetNextWeekNumber(-2) //求這週五是幾月幾號 //GetNextWeekNumber(-3) //求這週四是幾月幾號 } func GetNextWeekNumber(next time.Weekday) { number := next % 7 //保證是求下週一到下週天的某一個 now := time.Now() weekday := now.Weekday() if weekday == time.Sunday { weekday = 7 //週一為第一天,週二為第二天,以此類推,周天表示為第7天 } if number == time.Sunday { number = 7 } expiryDays := 7 - weekday + number nextWeek := now.AddDate(0, 0, int(expiryDays)) fmt.Printf("下一個%s 是 %s\n", next.String(), nextWeek) }