go 语言时间处理报错 panic time missing Location in call to ...

在golang 使用“Asia/Shanghai” 时区转换时间格式,本机正常,其他机器报错panic time missing Location in call to ...

这是由于缺少IANA TimeZone Database,一般在linux系统都自带了,但是在window系统中可能会缺失。

实例错误代码:

func Time2Timestamp (datetime string)int64{
	//时间 to 时间戳
	loc, err := time.LoadLocation("Asia/Shanghai")        //设置时区
	rt := strings.Index("/", datetime)
	if rt ==-1{
		tt, _ := time.ParseInLocation("2006/01/02 15:04:05", datetime, loc) //2006-01-02 15:04:05是转换的格式如php的"Y-m-d H:i:s"
		return tt.Unix()*1000
	}
	tt, _ := time.ParseInLocation("2006-01-02 15:04:05", datetime, loc) //2006-01-02 15:04:05是转换的格式如php的"Y-m-d H:i:s"
	ret := tt.Unix()*1000
	return ret
}

解决方法:time.FixZone()

func Time2Timestamp (datetime string)int64{
	//时间 to 时间戳
	loc, err := time.LoadLocation("Asia/Shanghai")        //设置时区
	if err !=nil{
		loc = time.FixedZone("CST",8*3600)
	}
	rt := strings.Index("/", datetime)
	if rt ==-1{
		tt, _ := time.ParseInLocation("2006/01/02 15:04:05", datetime, loc) //2006-01-02 15:04:05是转换的格式如php的"Y-m-d H:i:s"
		return tt.Unix()*1000
	}
	tt, _ := time.ParseInLocation("2006-01-02 15:04:05", datetime, loc) //2006-01-02 15:04:05是转换的格式如php的"Y-m-d H:i:s"
	ret := tt.Unix()*1000
	return ret
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值