Go Lang日期时间与unix时间戳互转

1.Go lang中日期时间转unix时间戳,10位unix时间戳转日期时间格式
/*
 * DES:日期时间格式转unix时间戳 和 unix时间戳转日期时间格式
 */

package main

import (
	"fmt"
	"time"
)

func main() {
	// 1.获取当前日期时间
	date_now := GetDateNow()
	fmt.Println("当前日期时间:", date_now)

	// 2.当前日期时间转换为10位时间戳
	unix_date := DateAndUnix(date_now)
	fmt.Println("日期时间格式", date_now, "转为unix时间戳是:", unix_date)

	// 3.当前日期时间的10位unix时间戳转日期时间格式
	unix_time := time.Now().Unix()      // 取当前日期时间戳
	logindate := UnixAndDate(unix_time) // 当前日期unix时间戳转日期时间格式
	fmt.Println("unix时间戳:", unix_time, "转换为日期格式是:", logindate)

}

/*
 * 获取系统当前日期时间
 * 返回东八区日期时间格式 : 2021-05-26 14:51:07
 */
func GetDateNow() string {
	/*
		go语言并没有全局设置时区这么一个东西,每次输出时间都需要调用一个In()函数改变时区:
		var location, _ = time.LoadLocation("Asia/Shanghai") //上海
		DateNow := time.Now().In(location).Format("2006-01-02 15:04:05")
		在windows系统上,没有安装go语言环境的情况下,time.LoadLocation会加载失败。最好的办法是用time.FixedZone
	*/
	var location = time.FixedZone("CST", 8*3600) // 设置时区为东八区
	timeLayout := "2006-01-02 15:04:05"          // go语言固定日期模版
	DateNow := time.Now().In(location).Format(timeLayout)
	return string(DateNow)
}

/*
 * Unix时间戳转为日期时间
 * prarms: 传入10位数的unix_time时间戳
 * 返回东八区日期时间格式: 2021-05-26 14:51:07
 */
func UnixAndDate(unix_date int64) string {
	var location = time.FixedZone("CST", 8*3600) // 设置时区为东八区
	timeLayout := "2006-01-02 15:04:05"          // go语言固定日期模版
	tm := time.Unix(unix_date, 0).In(location).Format(timeLayout)
	return string(tm)
}

/*
 * 日期时间转换为时间戳
 * date: 传入日期时间格式的数据
 * 返回10位数的unix时间戳: 1622012890
 */
func DateAndUnix(date string) int64 {
	timeLayout := "2006-01-02 15:04:05" // go语言固定日期模版
	times, _ := time.Parse(timeLayout, date)
	timeUnix := times.Unix()
	return timeUnix
}

 

posted @ 2024-08-02 15:10  沉雪's  阅读(33)  评论(0编辑  收藏  举报