登录
首页 >  Golang >  Go问答

从 django 获取可为空的日期时间并将其转换为 golang

来源:stackoverflow

时间:2024-04-19 13:09:34 434浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《从 django 获取可为空的日期时间并将其转换为 golang》,很明显是关于Golang的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

问题内容

这是我从 jsonified models.datetimefield 发送(以原始文本)模式的日期:

2019-05-07 16:49:47.351628+00:00

我如何在 golang 中接收它:

package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"

    "github.com/lib/pq"
)
type datalink struct {
    created     pq.nulltime `json:"created"`
}

type senddata struct {
    name string `json:"name"`
}

func main() {

    var reception = datalink{}
    var senddata = senddata{}
    senddata.name = "melon"
    url := "http://127.0.0.1:8309/getlinks/"
    fmt.println("url:>", url)

    js, err := json.marshal(senddata)

    req, err := http.newrequest("post", url, bytes.newbuffer(js))
    req.header.set("x-custom-header", "myvalue")
    req.header.set("content-type", "application/json")

    client := &http.client{}
    resp, err := client.do(req)
    if err != nil {
        panic(err)
    }
    defer resp.body.close()

    //fmt.println("response status:", resp.status)
    //fmt.println("response headers:", resp.header)
    body, _ := ioutil.readall(resp.body)
    //fmt.println("response body:", string(body))
    err = json.unmarshal(body, &reception)
    fmt.println(reception.created)
}

但是当我打印我的对象时,我有一个:

{0001-01-01 00:00:00 +0000 UTC false}

如何从 django 时间字段或通过字符串操作理想地转换我的日期时间以使其与 go 和 pq.nulltime 兼容?

其他一切都有效(bool、int、float、string),但日期无效......


解决方案


您需要有一个自定义时间类型才能 unmarshal 自定义时间格式:

type Datetime struct {
    pq.NullTime
}

func (t *Datetime) UnmarshalJSON(input []byte) error {
    strInput := strings.Trim(string(input), `"`)
    newTime, err := time.Parse(time.RFC3339, strInput)
    if err != nil {
        return err
    }

    t.pqNullTime = newTime
    return nil
}

默认情况下,json unmarshal 需要 rfc3339 格式的日期。

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>