前要:好记性不如烂笔头
目标一:时间戳转时间格式
过程:时间戳=>Time, Time=>需要的时间格式
// TimestampToTime 时间戳到时间
// timestamp int64:转换的时间戳
// layout string 需要转换的时间格式
func TimestampToTime(timestamp int64,layout string) string {
return time.Unix(timestamp, 0).Format(layout)
}
使用:
timestamp := time.Now().Unix()
fmt.Println(TimestampToTime(timestamp,"2006-01-02 15:04:05 PM"))
目标二:时间格式到时间戳的转换
过程:需要的时间格式=>Time,Time=>时间戳
// TimeToTimestamp 时间字符串到时间戳,你需要知道你的时间字符串格式
// layout 解析的时间格式,
// timestr 转换的时间
func TimeToTimestamp(layout,timestr string) (int64, error) {
loc, err := time.LoadLocation("Local")
if err != nil {
return -1, err
}
times, err := time.ParseInLocation(layout, timestr, loc)
if err != nil {
return -1, err
}
trantimestamp := times.Unix()
return trantimestamp, nil
}
使用:
trantimestamp, err := TimeToTimestamp("2006-01-02 15:04:05 PM","2017-09-07 09:49:54 AM")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("trantimestamp:",trantimestamp)
目标三:判断一个时间点是否在一个时间点之后
过程:这个对于时间戳而言非常简单,但是对于其他的需要转换到time即可对比
stringToTime, _ := time.Parse("2006-01-02 15:04:05", "2017-12-12 12:00:00")
beforeOrAfter := stringToTime.After(time.Now())
if beforeOrAfter == true {
fmt.Println("2017-12-12 12:00:00在tNow之后!")
} else {
fmt.Println("2017-12-12 12:00:00在tNow之前!")
}
// AfterTime 判断一个时间在现在之前还是之后
// layout 解析的时间格式,
// judeTime 需要判断的时间
// bool =true 在当前时候之后,false在当前时间之前
func AfterTime(layout, judeTime string) (bool, error) {
stringToTime, err := time.Parse(layout, judeTime)
if err != nil {
return false, err
}
beforeOrAfter := stringToTime.After(time.Now())
if beforeOrAfter == true {
return true, nil
} else {
return false, nil
}
}
目标四:判断一个时间相比另外一个时间点过去了多久
过程:这个是用Time的方式来对比
beginTime :=time.Now()
time.Sleep(time.Second*1)
durtime:= time.Since(beginTime)
fmt.Println("离现在过去了:",durtime)