api - 如何将字符串转换为 time.Time
问题描述
当我尝试将此 json 转换为时间时,我收到错误
输出:
这里------------------------------------ 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC
生的:
{
"tenantID": "9e266e1a750e45f8862e83341a5d0970",
"startTime": "2019-4-1T11:45:26.371Z",
"endTime": "2019-4-10T11:45:26.371Z"
}
控制器:
var bodyBytes []byte
raw := make(map[string]interface{})
jsons := make(map[string]interface{})
if h.Ctx.Request.Body != nil {
bodyBytes, _ = ioutil.ReadAll(h.Ctx.Request.Body)
}
json.Unmarshal(bodyBytes, &raw)
time1, err := time.Parse(time.RFC3339,raw["startTime"].(string));
time2, err := time.Parse(time.RFC3339,raw["endTime"].(string));
fmt.Println("HERE------------------------------------",time1,time2)
usageSingle, err := compute.UsageSingleTenant(raw["tenantID"].(string), time1, time2)
解决方案
您正在使用RFC3339,它需要以下形式的时间:
2019-04-01T11:45:26.371Z
不是
2019-4-1T11:45:26.371Z
当我将零填充放在您的代码中时,它工作正常。或者,如果我没有指定 RFC 时间而是使用:
time1, err := time.Parse("2006-2-1T15:04:05.999Z",raw["startTime"].(string));
推荐阅读
- clean-architecture - 清洁架构:内存实体的哪一层?
- android - onBindViewHolder 在片段中打开对话框时总是触发
- docker - docker 容器:服务立即退出
- c++ - 如何用现代 C++ 重写这个宏?
- c# - 点网核心,密码学,我每次都为同一个字符串得到不同的加密值
- ios - GCKMediaInformation initWithContentID 已弃用警告
- java - 从 java 1.4 升级到 java 8 时 java 中的日期问题
- javascript - 反应导航不返回登录屏幕
- python - 在 Windows 10 上进行 pip 安装时出现“空字节”错误
- python - hdf5 文件中的权重和偏差