1 Star 0 Fork 1

技术狼/go-fun

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
time.go 5.52 KB
一键复制 编辑 原始数据 按行查看 历史
技术狼 提交于 2024-07-18 19:17 . no message
package fun
import (
"time"
)
const ORIGIN_TIME = "2006-01-02 15:04:05" //go原始时间
// @title: Rfc3339格式时间转为正常时间
// @param: Rfc3339时间字符(string)
// @return: 时间字符串(string)
// @description: 如 2018-01-14T21:45:54+08:00 转为 2018-01-14 21:45:54
// @date: 2024/6/11 22:32
func Rfc3339ToDatetime(str string) string {
tt, _ := time.Parse(time.RFC3339, str)
return tt.Format(ORIGIN_TIME)
}
// @title: 标准时间转为时间戳
// @param: 标准时间(string)
// @return: 时间戳(秒)(int64)
// @description: 如 2018-01-14 21:45:54 转为 1515937554
// @date: 2024/6/11 22:32
func DatetimeToTimestamp(str string) int64 {
loc, _ := time.LoadLocation("Local") //获取时区
tmp, _ := time.ParseInLocation(ORIGIN_TIME, str, loc)
timestamp := tmp.Unix() //转化为时间戳 类型是int64
return timestamp
}
// @title: 时间戳转为标准时间
// @param: 时间戳(int64)
// @return: 标准时间(string)
// @description: 如 1515937554 转为 2018-01-14 21:45:54
// @date: 2024/6/11 22:32
func TimestampToDatetime(timestamp int64) string {
return time.Unix(timestamp, 0).Format(ORIGIN_TIME)
}
// @title: 获取当前标准时间
// @param:
// @return: 标准时间(string)
// @description: 时间格式:2021-12-30 23:14:07
// @date: 2024/6/11 22:32
func CurrentDateTime() string {
return time.Now().Format(ORIGIN_TIME)
}
// @title: 获取当前时间戳(秒)
// @param:
// @return: 时间戳(int64)
// @description:
// @date: 2024/6/11 22:32
func TimeStampSecond() int64 {
return time.Now().Unix()
}
// @title: 获取时间戳(毫秒)
// @param:
// @return: 时间戳(int64)
// @description:
// @date: 2024/6/11 22:32
func Millisecond() int64 {
return time.Now().UnixNano() / 1e6
}
// @title: 一个字符串时间与当前时间的时间差
// @param: 字符串时间(string) 如:2022-05-22 23:59:59
// @return: time.Duration,error
// @description: 东八时区
// @date: 2024/6/11 22:32
func DateTimeStrAadNowSub(ts string) (time.Duration, error) {
// 本地时间
now := time.Now()
// 按照指定格式解析一个字符串格式的时间
_, err := time.Parse("2006-01-02 15:04:05", ts)
if err != nil {
return 0, err
}
// 按照东八区的时区格式解析一个字符串
tlocal, err := time.LoadLocation("Asia/Shanghai")
if err != nil {
return 0, err
}
// 按照指定的时区解析时间
t, err := time.ParseInLocation("2006-01-02 15:04:05", ts, tlocal)
if err != nil {
return 0, err
}
// 计算时间的差值
//reverseTime := now.Sub(t)
reverseTime := t.Sub(now)
return reverseTime, nil
}
// @title: 时间戳转日期
// @param: int64,*time.Location
// @return: string
// @description: 输出日期格式(2006-01-02)
// @date: 2024/6/11 22:32
func TimestampToDate(timestamp int64, loc *time.Location) string {
tm := time.Unix(timestamp, 0).In(loc) // time.UTC
return tm.Format("2006-01-02")
}
// @title: 时间戳转数字格式日期字符
// @param: int64,*time.Location
// @return: string
// @description: 输出日期格式(20060102)
// @date: 2024/6/11 22:32
func TimestampToDateNumber(timestamp int64, loc *time.Location) string {
tm := time.Unix(timestamp, 0).In(time.UTC) // time.UTC
return tm.Format("20060102")
}
// @title: 获取时区-东八区(中国上海)
// @param:
// @return: *time.Location
// @description:
// @date: 2024/6/11 22:32
func LocAsiaShanghai() *time.Location {
loc, _ := time.LoadLocation("Asia/Shanghai")
return loc
}
// @title: 获取时区-0时区
// @param:
// @return: *time.Location
// @description:
// @date: 2024/6/11 22:32
func LocUTC() *time.Location {
return time.UTC
}
// @title: 获取时区-西八区(洛杉矶)
// @param:
// @return: *time.Location
// @description:
// @date: 2024/6/11 22:32
func LocAmericaLosAngeles() *time.Location {
loc, _ := time.LoadLocation("America/Los_Angeles")
return loc
}
// @title: 获取某个时间起,N天内的连续的数字格式日期
// @param: t:某个时间
// @param: days:相隔N天
// @param: dayN:取多少天
// @param: SameDay:当天是否在内
// @return: []time.Time
// @description: 返回格式如 [20240718 20240719 20240720 20240721 20240722 20240723 20240724]
// @date: 2024/6/11 22:32
func GetSometimeApartNDaysTimes(t time.Time, days int, dayN int, SameDay bool) []time.Time {
list := make([]time.Time, 0, dayN)
I := 0
if SameDay {
I = 1
list = append(list, t)
}
for i := I; i < dayN; i++ {
newTime := t.AddDate(0, 0, days)
list = append(list, newTime)
t = newTime
}
return list
}
// @title: 获取某个时间起,N天内的连续的时间(指定日期格式)
// @param: t:某个时间
// @param: days:相隔N天
// @param: dayN:取多少天
// @param: SameDay:当天是否在内
// @param: format:日期格式(如:2006-01-02 15:04:05)
// @return: []time.Time
// @description:
// @date: 2024/6/11 22:32
func GetSometimeApartNDaysTimesFormat(t time.Time, days int, dayN int, SameDay bool, format string) []string {
list := GetSometimeApartNDaysTimes(t, days, dayN, SameDay)
newList := make([]string, 0, len(list))
for _, t := range list {
date := t.Format(format)
newList = append(newList, date)
}
return newList
}
// @title: 获取某个时间起,第N天内的时间(指定日期格式)
// @param: t:某个时间
// @param: days:相隔N天
// @param: format:日期格式(如:2006-01-02 15:04:05)
// @return: string
// @description: 可以用来获取明天、昨天日期
// @date: 2024/6/11 22:32
func GetSometimeApartNDaysTimeFormat(t time.Time, days int, format string) string {
newT := t.AddDate(0, 0, days)
str := newT.Format(format)
return str
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/jishulangcom/go-fun.git
git@gitee.com:jishulangcom/go-fun.git
jishulangcom
go-fun
go-fun
v0.0.3

搜索帮助