函数功能 : 时间戳转日期时间
返回格式 : 字符串形式的日期时间
函数参数 : 1 时间戳 ( -1 代表当前时间 )
func main() {
fmt.Printf("%v\n", datetime.TimeStampToDatatime(1658997310))
// 2022-07-28 16:35:10
fmt.Printf("%v\n", datetime.TimeStampToDatatime(-1))
// 2023-01-05 12:13:59
}
函数功能 : 时间戳转日期时间
返回格式 : 字符串形式的日期时间
函数参数 : 1 时间戳 ( -1 代表当前时间 ) 2 日期格式
func main() {
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(1658997290, "2006-01-02 15:04"))
// 2022-07-28 16:34
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(1658997290, "2006-01-02 15"))
// 2022-07-28 16
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(1658997290, "2006-01-02"))
// 2022-07-28
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(1658997290, "01/02/2006"))
// 07/28/2022
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(1658997290, "20060102"))
// 20220728
fmt.Printf("%v\n", datetime.TimeStampToDatatimeFormat(-1, "20060102"))
// 20220728
}
函数功能 : 时间戳转日期时间切片形式
返回格式 : 字符串切片
函数参数 : 1 时间戳 ( -1 代表当前时间 )
func main() {
fmt.Printf("%v\n", datetime.TimeStampToDatatimeSlice(1658997290))
// [2022 07 28 16 34 50]
fmt.Printf("%v\n", datetime.TimeStampToDatatimeSlice(-1))
// [2023 01 05 12 15 58]
}
函数功能 : 日期时间转时间戳
返回格式 : 时间戳 int64
fmt.Printf("%v\n", datetime.DateTimeToTimeStamp("2022-07-28 16:34:50"))
// 1658997290
函数功能 : 日期时间转时间戳
参数 : 格式, 对应格式的时间
返回格式 : 时间戳 int64
timeStamp := datetime.DateTime2TimeStamp("01/02/2006 15:04:05", "10/26/2025 12:00:00")
Loger.Printf("时间戳 : %d", timeStamp)
函数功能 : 获取过去时间并格式化
返回格式 : 时间差, 过去时间 [ 英文 ], 过去时间 [ 中文 ]
func main() {
timeDifference, strEn, strZh := datetime.FormatPastTime(1660707752 - 3600)
fmt.Printf("timeDifference: %v\n", timeDifference)
fmt.Printf("strEn: %v\n", strEn)
fmt.Printf("strZh: %v\n", strZh)
}
// 1小时前 || ** 天前 || *** 分钟前 ...
函数功能 : 计算某年某月天数
返回格式 : 天数, 错误
func main() {
days, err := datetime.CountDaysOfAMonth("200402")
if err == nil {
fmt.Printf("days: %v\n", days)
} else {
fmt.Printf("err.Error(): %v\n", err.Error())
}
// 29
}
函数功能 : 判断某年是否为闰年
返回格式 : boolean
fmt.Printf("datetime.IsLeapYear(2000): %v\n", datetime.IsLeapYear(2000)) // true
fmt.Printf("datetime.IsLeapYear(2001): %v\n", datetime.IsLeapYear(2001)) // false
DatetTime 结构体
type DateTime struct {
Year int
YearString string
Month int
MonthString string
Day int
DayString string
Hour int
HourString string
Minute int
MinuteString string
Second int
SecondString string
TimeStamp int64
Format string
Result string
Time time.Time
}
使用演示
package gotool
import (
"fmt"
"testing"
"github.com/cnlesscode/gotool/datetime"
)
// 单元测试
// 测试命令 : go test -v -run=TestMain
func TestMain(t *testing.T) {
dt := datetime.New()
// 初始化当前时间
dt.Now()
Loger.Printf("当前时间 : %s", dt.Result)
// 下一年
nextYear := dt.Swicth("year", 1)
Loger.Printf("一年后时间 : %s", nextYear.Result)
// 下一月
nextMonth := nextYear.Swicth("month", 1)
Loger.Printf("一月后时间 : %s", nextMonth.Result)
// 前一天
lastDay := nextMonth.Swicth("day", -1)
Loger.Printf("前一天时间 : %s", lastDay.Result)
// 后3小时
nextHour := lastDay.Swicth("hour", 3)
Loger.Printf("后3小时时间 : %s", nextHour.Result)
// 后5分钟
nextMinute := nextHour.Swicth("minute", 5)
Loger.Printf("后5分钟时间 : %s", nextMinute.Result)
// 后10秒
nextSecond := nextMinute.Swicth("second", 10)
Loger.Printf("后10秒时间 : %s", nextSecond.Result)
// 日期时间转换为时间戳
timeStamp := datetime.DateTime2TimeStamp("01/02/2006 15:04:05", "10/26/2025 12:00:00")
Loger.Printf("时间戳 : %d", timeStamp)
// 遍历出2年24个月
// 初始化起始时间
startTime := datetime.New()
startTime.InitFromTimeStamp(datetime.DateTime2TimeStamp("01/02/2006 15:04:05", "01/01/2024 00:00:00"))
// 循环24个月
months := make([]*datetime.DateTime, 0)
for i := 0; i < 24; i++ {
months = append(months, startTime.Swicth("month", i))
}
for _, v := range months {
Loger.Printf("%s-%s", v.YearString, v.MonthString)
}
// 遍历出2个月内的天
days := make([]*datetime.DateTime, 0)
for i := 0; i < 2; i++ {
// 当前月
currentMonth := startTime.Swicth("month", i)
dayCount := currentMonth.CountDaysOfAMonth()
for j := 0; j < dayCount; j++ {
days = append(days, currentMonth.Swicth("day", j))
}
}
for _, v := range days {
Loger.Printf("%s-%s-%s", v.YearString, v.MonthString, v.DayString)
}
// 遍历12小时
startTimeForHour := datetime.New()
startTimeForHour.Now()
fmt.Printf("startTimeForHour: %v\n", startTimeForHour)
startTimeForHour.InitFromDatatime(
startTimeForHour.YearString + "-" +
startTimeForHour.MonthString + "-" +
startTimeForHour.DayString + " 00:00:00")
hours := make([]*datetime.DateTime, 0)
for i := 0; i < 12; i++ {
hour := startTimeForHour.Swicth("hour", i)
hours = append(hours, hour)
}
for _, hour := range hours {
fmt.Printf("hour: %v\n", hour.Result)
}
}