英文:
saving time to mongodb with golang with api, but the time is not matched
问题
这是我的结构体,位于不同的Go文件中:
type ImageData struct {
Id primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"`
Time time.Time `json:"time,omitempty" bson:"time,omitempty"`
Path string `json:"path,omitempty" bson:"path,omitempty"`
SizeBefore string `json:"sizebefore,omitempty" bson:"sizebefore,omitempty"`
SizeAfter string `json:"sizeafter,omitempty" bson:"sizeafter,omitempty"`
IsSuccess bool `json:"issuccess,omitempty" bson:"issuccess,omitempty"`
}
这是位于不同Go文件中的创建函数:
func CreateImageData(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var image models.ImageData
json.NewDecoder(r.Body).Decode(&image)
image.Time = time.Now()
collection := database.ImageData()
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
result, _ := collection.InsertOne(ctx, image)
json.NewEncoder(w).Encode(result)
}
当我创建一个ImageData结构体并保存到数据库时,时间不匹配。这是我MongoDB中的数据:
[
{
"id": "6453e3a9b680e192e2fb82aa",
"time": "2023-05-04T16:56:09.67Z",
"path": "/result/test1.png",
"sizebefore": "785KB",
"sizeafter": "785KB"
}
]
但是我的真实时间是2023-05-04T23:57:00。
如何修复这个问题以使时间准确?
对不起,我的英语不好。
英文:
this is my struct located in different go file
type ImageData struct {
Id primitive.ObjectID `json:"id,omitempty" bson:"_id,omitempty"`
Time time.Time `json:"time,omitempty" bson:"time,omitempty"`
Path string `json:"path,omitempty" bson:"path,omitempty"`
SizeBefore string `json:"sizebefore,omitempty" bson:"sizebefore,omitempty"`
SizeAfter string `json:"sizeafter,omitempty" bson:"sizeafter,omitempty"`
IsSuccess bool `json:"issuccess,omitempty" bson:"issuccess,omitempty"`
}
this is create function located in different go file
func CreateImageData(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var image models.ImageData
json.NewDecoder(r.Body).Decode(&image)
image.Time = time.Now()
collection := database.ImageData()
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
result, _ := collection.InsertOne(ctx, image)
json.NewEncoder(w).Encode(result)
}
when i create a ImageData struct and save to database the time isnt match
this is data in my mongodb
[
{
"id": "6453e3a9b680e192e2fb82aa",
"time": "2023-05-04T16:56:09.67Z",
"path": "/result/test1.png",
"sizebefore": "785KB",
"sizeafter": "785KB"
}
]
but my real time is 2023-05-04T23:57:00
how to fix this to make the time accurate
sorry for bad english
答案1
得分: 1
你可以使用"time"包和"Format"函数将日期时间转换为有效的格式。
请注意,你需要更改日期时间的格式,因为MongoDB使用UTC格式。
以下是一个示例:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now().UTC()
formatted := now.Format(time.RFC3339Nano)
fmt.Println(formatted)
}
英文:
You can use the 'time' package and the 'Format' function to convert the datetime into a valid format.
Please note that you need to change the format of the datetime as MongoDB uses UTC format.
Here's an example:
package main
import (
"fmt"
"time"
)
func main() {
now := time.Now().UTC()
formatted := now.Format(time.RFC3339Nano)
fmt.Println(formatted)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论