栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Go语言

Go获取n天前或后的日期、日期转秒时间戳、计算两个日期之间的天数差

Go语言 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Go获取n天前或后的日期、日期转秒时间戳、计算两个日期之间的天数差

获取n天前或后的日期:

// GetBeforeTime 获取n天前的秒时间戳、日期时间戳
// _day为负则代表取前几天,为正则代表取后几天,0则为今天
func GetBeforeTime(_day int) (int64, string) {
	// 时区
	//timeZone, _ := time.LoadLocation(ServerInfo["timezone"])
	timeZone := time.FixedZone("CST", 8*3600) // 东八区

	// 前n天
	nowTime := time.Now().In(timeZone)
	beforeTime := nowTime.AddDate(0, 0, _day)

	// 时间转换格式
	beforeTimeS := beforeTime.Unix() // 秒时间戳
	beforeDate := time.Unix(beforeTimeS, 0).Format("20060102150405") // 固定格式的日期时间戳

	return beforeTimeS, beforeDate
}

日期转秒时间戳:

// DateToTimeS 日期时间戳转时间戳,s
// _date为日期字符串
// format为日期字符串的的排布格式,支持YmdHis、Y-m-d H:i:s
func DateToTimeS(_date string, format string) int64 {
	var date string
	date = _date

	var layout string
	if format == "YmdHis" || format == "" {
		layout = "20060102150405" // 转化所需内定模板
	}else if format == "Y-m-d H:i:s" {
		layout = "2006-01-02 15:04:05"
	}else if format == "Y年m月d日 H:i:s" {
		layout = "2006年01月02日 15:04:05"
	}else {
		layout = "20060102150405"
	}

	//日期转化为时间戳
	loc, _ := time.LoadLocation("Local") //获取时区
	tmp, _ := time.ParseInLocation(layout, date, loc)
	timestamp := tmp.Unix() //转化为时间戳 类型是int64

	return timestamp
}

计算两个日期之间的天数差:

// DatesBetweenDay 计算两个日期之间有多少天间隔
// 支持YmdHis、Y-m-d H:i:s格式日期,startDate开始日期,endDate结束日期
// ±天数取决于开始时间和结束时间谁大
func DatesBetweenDay(startDate string, endDate string, format string) (day int64) {
	// 日期转秒时间戳
	startTime := DateToTimeS(startDate, format)
	endTime := DateToTimeS(endDate, format)
	// 获取日期秒之差
	dayTime := endTime - startTime
	// 时分秒将被忽略,只取天的部分
	day = int64(math.Floor(float64(dayTime / (24 * 60 * 60))))
	return
}

-

示例:

func main()  {
	day1 := -2
	before1, date1:= GetBeforeTime(day1)
	fmt.Println(before1)
	fmt.Println(date1)

	day2 := -5
	before2, date2:= GetBeforeTime(day2)
	fmt.Println(before2)
	fmt.Println(date2)

	day := DatesBetweenDay(date2, date1, "YmdHis")
	fmt.Println(day)

}

返回:

fyonecon@DJqinshihuang godemo % go run demo5.go
1621049966
20210515113926
1620790766
20210512113926
3

-

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/909195.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号