### **goshop开源项目的更新**
>备注:前面项目中用到的代码已经分享到`GitHub`中去了,并且以后所有项目中会出现的代码都会提交上去,欢迎查阅。
> 地址 [`goshop`](https://gitee.com/jobhandsome/goshop/) 感兴趣的可以点个`star`哦~ [`goshop开源项目的更新` ](https://gitee.com/jobhandsome/goshop/)
#### **今天在考虑之前做的登录接口记录登录时间无法正常记录入库的问题:**
1. **不使用`gorm.Model` 中的`UpdateAt`的字段,单独拉一个`LoginAt`作为记录字段:类型就定为`string`**
2. **通过获取当前时间戳转换后的日期格式:`2022-04-24T16:29:27+08:00` 转换成 `2022-04-24 16:29:27`**
3. **封装到已扩展的`time`组件**
#### **接下来咱们就来实现以上的问题和功能:**
1. **先设置时区:咱们这边使用的是:`Asia/Shanghai` 时区**
2. **使用 `time.LoadLocation()` 加载时区,并返回 `time.Time` 类型,以便后面使用**
3. **使用 `time.ParseInLocation()` 进行格式化:有三个参数:要转化的格式,当前要转换的日期字符串,时区的`time.Time`类型指针(`到了这一步只是把当前日期格式化成了时间戳字符`)**
4. **使用 `time.Unix()` 把第`3`步获取的时间戳字符转换成`Time`类型,然后使用 `Format()` 格式化 (`这一步最关键,如果没有这一步你是转换不成对应格式的日期返回的`)**
##### **转换代码如下:**
```go
// 将指定格式的日期,转成 YYYY-MM-DD HH:ii:ss
func (t LocalTime) FormatDateString(MyDateString string) string {
// 1. 设置时区
// 2. time.LoadLocation() 返回time.Time 类型
loc, _ := time.LoadLocation(timezone)
// timeFormat = 2006-01-02 15:04:05 go的默认日期
// 将日期字符串解析为Go的time对象第一个参数指定格式,第二个是日期字符串,转换成时间戳(秒)
myDate, err := time.ParseInLocation(timeFormat, MyDateString, loc)
if err != nil {
return ""
}
// 获取时间戳
// 1.把时间戳转使用time.Unix()转化为 time.Time 类型时间
// 2.使用Format() 方法进行格式化
DateString := time.Unix(myDate.Unix(), 0).Format(timeFormat)
return DateString
}
```
### **走到这里就实现了 日期格式转成指定格式的函数封装和使用~~~**
### **更多功能请持续关注!!!!! **
### **欢迎各位加我的微信(`jobhandsome`)跟我一起完成并推动项目的发展!**
![加入我们.png](https://static.golangjob.cn/220428/76016202be4db073f7b6c7598e4f1f26.png)
有疑问加站长微信联系(非本文作者)