您的位置:首页 > 编程语言 > Go语言

golang 格式化时间与时间戳的互相转换优化版小demo

2019-07-26 17:21 120 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/weixin_39998006/article/details/97397520

更简易的使用,根据参数的类型进行判断需要转换的结果

type TimeS struct {
timeStr string
option  string
num     int64
}

//时间戳与时间的互相转换
//@param            interface         int64与string格式的数据  前者转换格式化时间 后者转换时间戳
//@param            option         时间戳转换的格式
//@return            args        格式化时间
func (ts *TimeS) GetTimeStrOrStamp(param interface{}, option string) interface{} {
//根据值的类型不同赋予不同的字段
ts.option = option
var result interface{}
switch param.(type) {
case int64:
fmt.Println("我是一个小毛毛虫")
p := param.(int64)
ts.num = p
result = ts.GetStampToFormat()
case string:
p := param.(string)
ts.timeStr = p
result = ts.GetFormatToStamp()
default:
fmt.Println("我是一个小毛毛虫二号")
fmt.Println(param)
p := param.(int64)
ts.num = p
result = ts.GetStampToFormat()
}
return result
}

//时间转换时间戳
//@param            num         时间
//@param            option         时间戳转换的格式
//@return            args        格式化时间
func (ts *TimeS) GetFormatToStamp() int64 {
var timeStr string
timeStr = ts.timeStr
option := ts.option
loc, _ := time.LoadLocation("Asia/Shanghai") //设置时区
switch option {
case "YmdHis":
tt, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, loc)
return tt.Unix()
case "YmdHi":
tt, _ := time.ParseInLocation("2006-01-02 15:04", timeStr, loc)
return tt.Unix()
case "Ymd":
tt, _ := time.ParseInLocation("2006-01-02", timeStr, loc)
return tt.Unix()
case "ANSIC":
tt, _ := time.ParseInLocation("Mon Jan _2 15:04:05 2006", timeStr, loc)
return tt.Unix()
case "UnixDate":
tt, _ := time.ParseInLocation("Mon Jan _2 15:04:05 MST 2006", timeStr, loc)
return tt.Unix()
case "RFC822Z":
tt, _ := time.ParseInLocation("02 Jan 06 15:04 -0700", timeStr, loc)
return tt.Unix()
case "RFC850":
tt, _ := time.ParseInLocation("Monday, 02-Jan-06 15:04:05 MST", timeStr, loc)
return tt.Unix()
case "RFC1123":
tt, _ := time.ParseInLocation("Mon, 02 Jan 2006 15:04:05 MST", timeStr, loc)
return tt.Unix()
case "RFC1123Z":
tt, _ := time.ParseInLocation("Mon, 02 Jan 2006 15:04:05 -0700", timeStr, loc)
return tt.Unix()
case "RFC3339":
tt, _ := time.ParseInLocation("2006-01-02T15:04:05Z07:00", timeStr, loc)
return tt.Unix()
case "RFC3339Nano":
tt, _ := time.ParseInLocation("2006-01-02T15:04:05.999999999Z07:00", timeStr, loc)
return tt.Unix()
case "Kitchen":
tt, _ := time.ParseInLocation("3:04PM", timeStr, loc)
return tt.Unix()
case "Stamp":
tt, _ := time.ParseInLocation("Jan _2 15:04:05", timeStr, loc)
return tt.Unix()
case "StampMilli":
tt, _ := time.ParseInLocation("Jan _2 15:04:05.000", timeStr, loc)
return tt.Unix()
case "StampMicro":
tt, _ := time.ParseInLocation("Jan _2 15:04:05.000000", timeStr, loc)
return tt.Unix()
case "StampNano":
tt, _ := time.ParseInLocation("Jan _2 15:04:05.000000000", timeStr, loc)
return tt.Unix()
default:
tt, _ := time.ParseInLocation("2006-01-02 15:04:05", timeStr, loc)
return tt.Unix()
}

}

func (ts *TimeS) GetStampToFormat() string {
num := ts.num
option := ts.option
format := make(map[string]interface{})
format["YmdHis"] = "2006-01-02 15:04:05"
switch option {
case "YmdHis":
return time.Unix(num, 0).Format("2006-01-02 15:04:05")
case "YmdHi":
return time.Unix(num, 0).Format("2006-01-02 15:04")
case "Ymd":
return time.Unix(num, 0).Format("2006-01-02")
case "ANSIC":
return time.Unix(num, 0).Format("Mon Jan _2 15:04:05 2006")
case "UnixDate":
return time.Unix(num, 0).Format("Mon Jan _2 15:04:05 MST 2006")
case "RFC822Z":
return time.Unix(num, 0).Format("02 Jan 06 15:04 -0700")
case "RFC850":
return time.Unix(num, 0).Format("Monday, 02-Jan-06 15:04:05 MST")
case "RFC1123":
return time.Unix(num, 0).Format("Mon, 02 Jan 2006 15:04:05 MST")
case "RFC1123Z":
return time.Unix(num, 0).Format("Mon, 02 Jan 2006 15:04:05 -0700")
case "RFC3339":
return time.Unix(num, 0).Format("2006-01-02T15:04:05Z07:00")
case "RFC3339Nano":
return time.Unix(num, 0).Format("2006-01-02T15:04:05.999999999Z07:00")
case "Kitchen":
return time.Unix(num, 0).Format("3:04PM")
case "Stamp":
return time.Unix(num, 0).Format("Jan _2 15:04:05")
case "StampMilli":
return time.Unix(num, 0).Format("Jan _2 15:04:05.000")
case "StampMicro":
return time.Unix(num, 0).Format("Jan _2 15:04:05.000000")
case "StampNano":
return time.Unix(num, 0).Format("Jan _2 15:04:05.000000000")
default:
return time.Unix(num, 0).Format("2006-01-02 15:04:05")
}

}

//调用
timeP := new(helper.TimeNow)
times := timeP.GetTimeStrOrStamp(int64(1483686245), "YmdHis")
times := timeP.GetTimeStrOrStamp(“2019-07-06 15:04:05”, "YmdHis")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: