GVKun编程网logo

在Golang中以外发JSON格式设置时间戳?(golang 时间戳)

13

针对在Golang中以外发JSON格式设置时间戳?和golang时间戳这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展golang字符串json格式解析、Golang中如何设置时间、gola

针对在Golang中以外发JSON格式设置时间戳?golang 时间戳这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展golang 字符串 json格式解析、Golang中如何设置时间、golang中时间戳格式化、golang多种方式设置时区等相关知识,希望可以帮助到你。

本文目录一览:

在Golang中以外发JSON格式设置时间戳?(golang 时间戳)

在Golang中以外发JSON格式设置时间戳?(golang 时间戳)

我最近一直在玩Go,它很棒。在浏览文档和博客文章之后,我似乎无法弄清楚的事情是如何将time.Time类型格式化为我想要的格式,json.NewEncoder.Encode

这是一个最小的代码示例:

package maintype Document struct {    Name        string    Content     string    Stamp       time.Time    Author      string}func sendResponse(data interface{}, w http.ResponseWriter, r * http.Request){     _, err := json.Marshal(data)    j := json.NewEncoder(w)    if err == nil {        encodedErr := j.Encode(data)        if encodedErr != nil{            //code snipped        }    }else{       //code snipped    }}func main() {    http.HandleFunc("/document", control.HandleDocuments)    http.ListenAndServe("localhost:4000", nil)}func HandleDocuments(w http.ResponseWriter,r *http.Request) {    w.Header().Set("Content-Type", "application/json")    w.Header().Set("Access-Control-Allow-Origin", "*")    switch r.Method {        case "GET":             //logic snipped            testDoc := model.Document{"Meeting Notes", "These are some notes", time.Now(), "Bacon"}                sendResponse(testDoc, w,r)            }        case "POST":        case "PUT":        case "DELETE":        default:            //snipped    }}

理想情况下,我想发送一个请求并以类似的方式获取“戳记”字段,May 15,2014而不是2014-05-16T08:28:06.801064-04:00

但是我不确定如何,我知道我可以添加json:stamp到文档类型声明中以使用名称戳而不是戳来编码字段,但是我不知道这些类型的东西叫什么,所以我我什至不确定要在Google上查找什么,以了解其中是否还有某种格式设置选项。

是否有人链接到示例或优质文档页面上有关这些类型标记(或称为它们的名称)主题的链接,或者我如何告诉JSON编码器处理time.Time字段?

仅供参考,我查看了以下页面:这里和这里,当然还有官方文档

答案1

小编典典

您可以做的是,将time.Time包装为您自己的自定义类型,并使其实现Marshaler接口:

type Marshaler interface {    MarshalJSON() ([]byte, error)}

因此,您要做的是:

type JSONTime time.Timefunc (t JSONTime)MarshalJSON() ([]byte, error) {    //do your serializing here    stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2"))    return []byte(stamp), nil}

并制作文件:

type Document struct {    Name        string    Content     string    Stamp       JSONTime    Author      string}

并使您的初始化看起来像:

 testDoc := model.Document{"Meeting Notes", "These are some notes", JSONTime(time.Now()), "Bacon"}

就是这样。如果您想拆封,也可以使用该Unmarshaler界面。

golang 字符串 json格式解析

golang 字符串 json格式解析

最近在用golang写关于微信方面的东西,首先遇到的就是将字符串转换成golang的json格式,利用corpid和corpsecret返回的是一个json格式的字符串,其格式如下:
{"access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}
我们可以把它转换成一个map[string]interface{}类型的数据,相关代码如下:
str:="{\"access_token\":\"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m\",\"expires_in\":7200}"
    var dat map[string]interface{}
    if err := json.Unmarshal([]byte(str),&dat); err == nil {
        fmt.Println(dat)
        fmt.Println(dat["expires_in"])
    } else {
        fmt.Println(err)
    }
运行的结果如下:
map[access_token:uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m expires_in:7200] 7200
我们还可以定义一个结构体,将数据转换成对应的结构体对象,再获取相应的数据,定义一个weixintoken结构体:
type weixintoken struct {
    Tokens string `json:"access_token"`
    Expires int `json:"expires_in"`
}
注意相应变量首字母的大小写(首字母小写不可见,大写可见,具体查看golang的变量相关的内容),将JSON绑定到结构体,结构体的字段一定要大写,否则不能绑定数据。
ret:="{\"access_token\":\"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m\",\"expires_in\":7200}"
    var config weixintoken
    if err := json.Unmarshal([]byte(ret),&config); err == nil {
        fmt.Println(config)
        fmt.Println(config.Tokens)
    }else {
        fmt.Println(err)
    }
运行结果如下:
{"access_token":"uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m","expires_in":7200}
{uAUS6o5g-9rFWjYt39LYa7TKqiMVsIfCGPEN4IZzdAk5-T-ryVhL7xb8kYciuU_m 7200}

参考:http://golangtc.com/t/5322b2ea320b523f0a000075
http://www.tuicool.com/articles/BFruI3
http://www.cnblogs.com/fengbohello/p/4665883.html
https://segmentfault.com/q/1010000005025933/a-1020000005032034
http://www.cnblogs.com/go-ios/p/3906251.html
http://www.jb51.cc/article/p-geszyymz-xp.html

Golang中如何设置时间

Golang中如何设置时间

golang是一种流行的编程语言,它提供了一种灵活的时间管理机制。在许多应用程序中,时间处理是必不可少的部分。本文将介绍golang中如何设置时间,并提供一些实用技巧。

  1. 概述

处理时间的方式在各种编程语言中都不同。在Golang中,时间是一个包含年、月、日、小时、分钟、秒和纳秒的结构体。Golang使用time包来处理时间。

  1. 获取当前时间

我们从最基本的例子开始:获取当前时间。可以使用now()函数来获取当前时间。如下所示:

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()

    fmt.Printf("Current time: %d-%02d-%02d %02d:%02d:%02d\n", now.Year(), now.Month(), now.Day(),
        now.Hour(), now.Minute(), now.Second())
}
登录后复制

输出结果如下:

Current time: 2021-08-16 15:16:09
登录后复制
  1. 设置时间

在Golang中,可以使用time.Date()函数创建一个新的时间实例。这个函数的参数分别是年、月、日、小时、分钟、秒和纳秒。例如,下面的示例创建了一个时间为2022年1月1日的对象:

立即学习“go语言免费学习笔记(深入)”;

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC)
    fmt.Println(t)
}
登录后复制

输出结果如下:

2022-01-01 00:00:00 +0000 UTC
登录后复制
登录后复制
  1. 更改时间

可以使用time.Add()函数在现有时间上添加某个时间段来更改时间。例如,下面的示例将当前时间增加了2分钟:

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    fmt.Println("Current time:", now.Format("2006-01-02 15:04:05"))

    later := now.Add(2 * time.Minute)
    fmt.Println("Time in 2 minutes:", later.Format("2006-01-02 15:04:05"))
}
登录后复制

输出结果如下:

Current time: 2021-08-16 16:00:14
Time in 2 minutes: 2021-08-16 16:02:14
登录后复制
  1. 解析时间字符串

如果要从字符串中解析时间,可以使用time.Parse()函数。该函数需要一个时间布局(layout)参数,指定所需格式。例如,下面的示例将字符串"2022-01-01"解析为一个时间对象:

package main

import (
    "fmt"
    "time"
)

func main() {
    str := "2022-01-01"
    layout := "2006-01-02"
    t, err := time.Parse(layout, str)
    if err != nil {
        fmt.Println(err)
    }
    fmt.Println(t)
}
登录后复制

输出结果如下:

2022-01-01 00:00:00 +0000 UTC
登录后复制
登录后复制
  1. 总结

在本文中,我们介绍了Golang中设置时间及其相关操作的方法。可以使用time包来获取当前时间、设置新的时间、更改现有时间以及解析时间字符串。这些技巧将有助于管理时间,并在Golang应用程序中实现时间操作。

以上就是Golang中如何设置时间的详细内容,更多请关注php中文网其它相关文章!

golang中时间戳格式化

golang中时间戳格式化

var t int64 = time.Now().Unix()
var s string = time.Unix(t,0).Format("2006-01-02 15:04:05")
println(s)

这方式比较特别,按照123456来记忆吧:01月02号 下午3点04分05秒 2006年

golang多种方式设置时区

golang多种方式设置时区

关于我

文章首发 | 我的博客 | 欢迎关注

go语言的time.Now()返回的是当地时区时间

time.Now().Format("2006-01-02 15:04:05")

time设置自定义时区

var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海
fmt.Println("SH : ", time.Now().In(cstSh).Format("2006-01-02 15:04:05"))

LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。所以如果windows系统没有安装go环境,调用LoadLocation就会报错。

当前解决方法也有:

1、我们可以自己把tzdata文件放到自己的程序目录中,然后让 time 包能够从我们自己的程序目录中加载时区文件就可以了。

文件目录可以通过环境变量设置,在main方法中:

os.Setenv("ZONEINFO", ''/home/tz/data.zip'')

然后再调用 LoadLocation 方法就可以了。

下载tzdata

2、使用时区方式 推荐方式

var cstZone = time.FixedZone("CST", 8*3600)       // 东八区
fmt.Println("SH : ", time.Now().In(cstZone).Format("2006-01-02 15:04:05"))

全局设置

如果说要设置全局的time时区配置应该如何做?

main.go(主函数处)增加一个初始化方法

func initInMain() {
	var cstZone = time.FixedZone("CST", 8*3600) // 东八
	time.Local = cstZone
}

将定义的时区实例赋值给time.Local

推荐阅读

Redis工具收费后新的开源已出现

GitHub上Star最高的工程师技能图谱

中国程序员最容易发错的单词

推荐!!! Markdown图标索引网站

最后

本文到此结束,希望对你有帮助

如果还有什么疑问或者建议,可以多多交流,原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

更多精彩技术文章汇总在我的 公众号【程序员工具集]】,持续更新,欢迎关注订阅收藏

我们今天的关于在Golang中以外发JSON格式设置时间戳?golang 时间戳的分享就到这里,谢谢您的阅读,如果想了解更多关于golang 字符串 json格式解析、Golang中如何设置时间、golang中时间戳格式化、golang多种方式设置时区的相关信息,可以在本站进行搜索。

本文标签: