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")
相关文章推荐
- Golang 奇葩的时间包之Json与struct对象之间互相转换,JsonDate和JsonTime自定义类型如何实现json编码和解码(二)
- MySql 格式化时间(包括正常时间格式与unix时间戳的互相转换)
- JSON时间转换格式化
- C语言之本地时间与格林威治时间互相转换(2种相互转换方法)
- javascript中常见的函数封装 :判断是否是手机,判断是否是微信,获取url地址?后面的具体参数值,毫秒格式化时间,手机端px、rem尺寸转换等
- iOS时间戳字符串NSdate转换demo
- 获取当前日期时间、日期时间格式化及转换
- 时间戳和字符串之间的互相转换
- Python日常-格式化日期与时间戳转换
- golang中时间戳格式化
- JAVA SimpleDateFormat 中英文时间格式化转换
- 时间和时间戳互相转换
- JS时间戳、日期互相转换
- python时间时分秒与秒数的互相转换
- 时间格式的互相转换
- Golang 时间转换
- js中的时间与毫秒数互相转换
- Python日常-格式化日期与时间戳转换
- Oracle中的日期和字符串互相转换以及格式化
- Flex 时间格式化 (转换)