golang時間轉換


1.datetime轉換成時間字符串

package main

import (
	"fmt"
	"reflect"
	"time"
)

func main() {
	now := time.Now()       // 當前 datetime 時間
	fmt.Println(reflect.TypeOf(now))    // 打印當前時間的類型
	fmt.Println(now)        // 打印當前時間
	fmt.Println("***********************")
	t1 := now.Format("2006-01-02 15:04:05")     // 把當前 datetime 時間轉換成時間字符串
	fmt.Println(t1)
	fmt.Println(reflect.TypeOf(t1))
}

程序執行結果

time.Time
2019-09-16 17:51:01.2357834 +0800 CST m=+0.004988701
***********************
2019-09-16 17:51:01
string

2.datetime轉換成時間戳

package main

import (
	"fmt"
	"time"
)

func parse_datetime_to_timestamp(d time.Time) int64 {
	unix_time := d.Unix()
	return unix_time
}
func main() {
	now := time.Now()                      // 當前 datetime 時間
	t1 := parse_datetime_to_timestamp(now) // 轉換成時間戳

	tomorrow := now.AddDate(0, 0, +1)           // 一天之后的 datetime 時間
	t2 := parse_datetime_to_timestamp(tomorrow) // 轉換成時間戳

	fmt.Println(t1)
	fmt.Println(t2)
}

程序執行結果

1568631868
1568718268

3.時間戳轉換成時間字符串

package main

import (
	"fmt"
	"time"
)

func parse_timestamp_to_timestr(t int64, flag int) string {
	var time_str string
	if flag == 1 {
		time_str = time.Unix(t, 0).Format("2006.01.02")
	} else if flag == 2 {
		time_str = time.Unix(t, 0).Format("2006-01-02 15:04:05")
	} else if flag == 3 {
		time_str = time.Unix(t, 0).Format("2006-01-02 15:04")
	} else {
		time_str = time.Unix(t, 0).Format("2006-01-02")
	}
	return time_str
}

func main() {
	var t1 int64
	t1 = 1567778332
	str1 := parse_timestamp_to_timestr(t1,3)
	fmt.Println(str1)
}

程序執行結果

2019-09-06 21:58

4.時間字符串轉換成時間戳

package main

import (
	"fmt"
	"time"
)

func parse_timestr_to_timestamp(time_str string, flag int) int64 {
	var t int64
	loc, _ := time.LoadLocation("Local")
	if flag == 1 {
		t1, _ := time.ParseInLocation("2006.01.02 15:04:05", time_str, loc)
		t = t1.Unix()
	} else if flag == 2 {
		t1, _ := time.ParseInLocation("2006-01-02 15:04", time_str, loc)
		t = t1.Unix()
	} else if flag == 3 {
		t1, _ := time.ParseInLocation("2006-01-02", time_str, loc)
		t = t1.Unix()
	} else if flag == 4 {
		t1, _ := time.ParseInLocation("2006.01.02", time_str, loc)
		t = t1.Unix()
	} else {
		t1, _ := time.ParseInLocation("2006-01-02 15:04:05", time_str, loc)
		t = t1.Unix()
	}
	return t
}

func main() {
	time_str1 := "2019-09-16 00:00:00"
	time_str2 := "2019-09-16 15:04"
	time_str3 := "2019-09-16"
	time_str4 := "2019.09.18"
	t1 := parse_timestr_to_timestamp(time_str1,5)
	fmt.Println(t1)

	t2 := parse_timestr_to_timestamp(time_str2,2)
	fmt.Println(t2)

	t3 := parse_timestr_to_timestamp(time_str3,3)
	fmt.Println(t3)

	t4 := parse_timestr_to_timestamp(time_str4,4)
	fmt.Println(t4)
}

程序執行結果

1568563200
1568617440
1568563200
1568736000

5.時間戳轉換成datetime時間

package main

import (
	"fmt"
	"time"
)

func parse_timestamp_to_datetime(t int64) time.Time {
	return time.Unix(t,0)
}

func main() {
	var t1 int64
	t1 = 1568634050
	time1 := parse_timestamp_to_datetime(t1)
	fmt.Println(time1)
}

程序執行結果

2019-09-16 19:40:50 +0800 CST

6.時間字符串轉換成時間戳

package main

import (
	"fmt"
	"time"
)

func parse_timestr_to_datetime(time_str string, flag int) time.Time {
	if flag == 1 {
		t, error1 := time.Parse("2006-01-02 15:04:05", time_str)
		if error1 != nil {
			panic(error1)
		}
		return t
	} else if flag == 2 {
		t, error2 := time.Parse("2006-01-02 15:04", time_str)
		if error2 != nil {
			panic(error2)
		}
		return t
	} else if flag == 3 {
		t, error3 := time.Parse("2006-01-02", time_str)
		if error3 != nil {
			panic(error3)
		}
		return t
	} else if flag == 4 {
		t, error4 := time.Parse("2006.01.02 15:04:05", time_str)
		if error4 != nil {
			panic(error4)
		}
		return t
	} else if flag == 5 {
		t, error5 := time.Parse("2006.01.02 15:04", time_str)
		if error5 != nil {
			panic(error5)
		}
		return t
	} else {
		t, err := time.Parse("2006.01.02", time_str)
		if err != nil {
			panic(err)
		}
		return t
	}
}

func main() {
	time_str1 := "2019-09-16 15:04:05"
	t1 := parse_timestr_to_datetime(time_str1, 1)
	fmt.Println(t1)

	time_str2 := "2019-09-16 15:04"
	t2 := parse_timestr_to_datetime(time_str2, 2)
	fmt.Println(t2)

	time_str3 := "2019-09-16"
	t3 := parse_timestr_to_datetime(time_str3, 3)
	fmt.Println(t3)

	time_str4 := "2019.09.16 15:04:05"
	t4 := parse_timestr_to_datetime(time_str4, 4)
	fmt.Println(t4)

	time_str5 := "2019.09.16 15:04"
	t5 := parse_timestr_to_datetime(time_str5, 5)
	fmt.Println(t5)

	time_str6 := "2019.09.16"
	t6 := parse_timestr_to_datetime(time_str6, 6)
	fmt.Println(t6)
}

程序執行結果

2019-09-16 15:04:05 +0000 UTC
2019-09-16 15:04:00 +0000 UTC
2019-09-16 00:00:00 +0000 UTC
2019-09-16 15:04:05 +0000 UTC
2019-09-16 15:04:00 +0000 UTC
2019-09-16 00:00:00 +0000 UTC

7.日期加減操作

package main

import (
	"fmt"
	"time"
)

func main() {
	now := time.Now()		// 當前 datetime時間
	tomorrow := now.AddDate(0, 0, +1)	// 一天之后的時間
	fmt.Println(tomorrow)
	
	day_after_15 := now.AddDate(0, 0, -15)	// 15天之前的時間
	fmt.Println(day_after_15)
}

程序執行結果

2019-09-17 17:55:59.4755575 +0800 CST
2019-09-01 17:55:59.4755575 +0800 CST

總結:

import (
	"fmt"
	"time"
)

func parse_datetime_to_timestr(t time.Time, flag int) string {
	/**
		把 datetime 轉換成 時間字符串
		t: datetime 時間,比如:2019-09-17 09:45:42.5962359 +0800 CST m=+0.003989201
		flag: 標識位,決定輸出的時間字符串的格式
	 */
	var time_str string
	if flag == 1 {
		time_str = t.Format("2006-01-02 15:04:05")
	} else if flag == 2 {
		time_str = t.Format("2006-01-02 15:04")
	} else if flag == 3 {
		time_str = t.Format("2006-01-02")
	} else if flag == 4 {
		time_str = t.Format("2006.01.02 15:04:05")
	} else if flag == 6 {
		time_str = t.Format("2006.01.02 15:04")
	} else {
		time_str = t.Format("2006.01.02")
	}
	return time_str
}

func parse_datetime_to_timestamp(t time.Time) int64 {
	/**
		把 datetime 轉換成時間戳
		t: datetime 時間
	 */
	return t.Unix()
}

func parse_timestr_to_datetime(time_str string, flag int) time.Time {
	/**
		把時間字符串轉換成 datetime 時間
		time_str: 時間字符串,比如:2019-09-17 15:04:05
		flag: 標識位,決定輸入的時間字符串的格式
	 */
	if flag == 1 {
		t, error1 := time.Parse("2006-01-02 15:04:05", time_str)
		if error1 != nil {
			panic(error1)
		}
		return t
	} else if flag == 2 {
		t, error2 := time.Parse("2006-01-02 15:04", time_str)
		if error2 != nil {
			panic(error2)
		}
		return t
	} else if flag == 3 {
		t, error3 := time.Parse("2006-01-02", time_str)
		if error3 != nil {
			panic(error3)
		}
		return t
	} else if flag == 4 {
		t, error4 := time.Parse("2006.01.02 15:04:05", time_str)
		if error4 != nil {
			panic(error4)
		}
		return t
	} else if flag == 5 {
		t, error5 := time.Parse("2006.01.02 15:04", time_str)
		if error5 != nil {
			panic(error5)
		}
		return t
	} else {
		t, err := time.Parse("2006.01.02", time_str)
		if err != nil {
			panic(err)
		}
		return t
	}
}

func parse_timestr_to_timestamp(time_str string, flag int) int64 {
	/**
		把時間字符串轉換成時間戳
		time_str: 時間字符串,比如:2019-09-17 09:45:42
		flag: 標識位,決定傳入的時間字符串的格式
	 */
	var t int64
	loc, _ := time.LoadLocation("Local")
	if flag == 1 {
		t1, _ := time.ParseInLocation("2006.01.02 15:04:05", time_str, loc)
		t = t1.Unix()
	} else if flag == 2 {
		t1, _ := time.ParseInLocation("2006-01-02 15:04", time_str, loc)
		t = t1.Unix()
	} else if flag == 3 {
		t1, _ := time.ParseInLocation("2006-01-02", time_str, loc)
		t = t1.Unix()
	} else if flag == 4 {
		t1, _ := time.ParseInLocation("2006.01.02", time_str, loc)
		t = t1.Unix()
	} else {
		t1, _ := time.ParseInLocation("2006-01-02 15:04:05", time_str, loc)
		t = t1.Unix()
	}
	return t
}

func parse_timestamp_to_timestr(stamp int64, flag int) string {
	/**
		把時間戳轉換成時間字符串
		stamp: 時間戳,比如:1568685105,調用此方法時需先聲明為 int64 類型
		flag: 標識位,決定輸入的時間字符串的格式
	 */
	var time_str string
	if flag == 1 {
		time_str = time.Unix(stamp, 0).Format("2006-01-02")
	} else if flag == 2 {
		time_str = time.Unix(stamp, 0).Format("2006-01-02 15:04:05")
	} else if flag == 3 {
		time_str = time.Unix(stamp, 0).Format("2006-01-02 15:04")
	} else if flag == 4 {
		time_str = time.Unix(stamp, 0).Format("2006.01.02 15:04:05")
	} else if flag == 5 {
		time_str = time.Unix(stamp, 0).Format("2006.01.02 15:04")
	} else {
		time_str = time.Unix(stamp, 0).Format("2006.01.02")
	}
	return time_str
}

func parse_timestamp_to_datetime(t int64) time.Time {
    /**
		時間戳轉換成 datetime 時間
	 */
	return time.Unix(t, 0)
}

func get_after_day(day_range, flag int) time.Time {
	/**
		獲取多少天,多少月或者多少年之前或之后的時間
		day_range: 間隔的天數,月數或者年份數
		flag: 決定是取天數,月數還是年數
	 */
	now := time.Now()
	var tmp_day time.Time
	if flag == 1 {
		tmp_day = now.AddDate(day_range, 0, 0)
	} else if flag == 2 {
		tmp_day = now.AddDate(0, day_range, 0)
	} else {
		tmp_day = now.AddDate(0, 0, day_range)
	}
	return tmp_day
}

func get_after_time(time_range string) time.Time {
	/**
		獲取多少小時,分鍾及秒之前或之后的時間
		time_range: 時間差,比如:
			10h 	獲取10小時之后的時間
			-10h 	獲取10小時之前的時間
			10m		獲取10分鍾之后的時間
			-10m	獲取10分鍾之后的時間
			10s		獲取10秒之后的時間
			-10s	獲取10秒之后的時間
	 */
	m, _ := time.ParseDuration(time_range)
	tmp := time.Now().Add(m)
	return tmp
}

func get_current(t time.Time) {
	current_year := t.Year() //	獲取年份
	fmt.Println(current_year)

	current_month := t.Month() //	獲取月份
	fmt.Println(current_month)

	current_day := t.Day() //	獲取天數
	fmt.Println(current_day)

	current_hour := t.Hour() //	獲取小時數
	fmt.Println(current_hour)

	current_minute := t.Minute() //	獲取分鍾數
	fmt.Println(current_minute)

	current_second := t.Second() //	獲取秒數
	fmt.Println(current_second)

	current_nanosecond := t.Nanosecond() //	獲取納秒數
	fmt.Println(current_nanosecond)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM