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

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

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")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值