/* Copyright (c) [2023] [pcm] [pcm-coordinator] is licensed under Mulan PSL v2. You can use this software according to the terms and conditions of the Mulan PSL v2. You may obtain a copy of Mulan PSL v2 at: http://license.coscl.org.cn/MulanPSL2 THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPaRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. See the Mulan PSL v2 for more details. */ package timeutils import ( "time" ) var timeTemplates = []string{ "2006-01-02T15:04:05Z07:00", //RFC3339 "2006-01-02 15:04:05", //常规类型 "2006/01/02T15:04:05Z07:00", //RFC3339 "2006/01/02 15:04:05", "2006-01-02", "2006/01/02", "15:04:05", } func GetTimeDurationString(startTime string, endTime string) string { end, _ := time.Parse("2006-01-02 15:04:05", endTime) start, _ := time.Parse("2006-01-02 15:04:05", startTime) difference := end.Sub(start) return difference.Truncate(time.Second).String() } func DurationToDateTime(timeData uint64) time.Time { timeString := time.Unix(int64(timeData), 0).Format("2006-01-02 15:04:05") return TimeStringToGoTime(timeString) } // TimeStringToGoTime 时间格式字符串转换 func TimeStringToGoTime(tm string) time.Time { for i := range timeTemplates { t, err := time.ParseInLocation(timeTemplates[i], tm, time.Local) if nil == err && !t.IsZero() { return t } } return time.Time{} } func TimeStringRemoveZone(tm string) string { timeZone, _ := time.Parse("2006-01-02 15:04:05 -0700 MST", tm) return timeZone.Format("2006-01-02 15:04:05") } func TimeRemoveZone(tm time.Time) time.Time { parse, err := time.Parse("2006-01-02 15:04:05", tm.Format("2006-01-02 15:04:05")) if err != nil { return time.Time{} } return parse } func StringToUnixTime(str string) int64 { dt, err := time.ParseInLocation("2006-01-02 15:04:05", str, time.Local) if err != nil { return 0 } return dt.Unix() } func UnixTimeToString(ut int64) string { t := time.Unix(ut, 0) return t.Format("2006-01-02 15:04:05") }