Go语言中文网 为您找到相关结果 36

Go时间戳和日期字符串的相互转换

Go语言中,获取时间戳用time.Now().Unix(),格式化时间用t.Format,解析时间用time.Parse。 看实例代码: package main import ( "fmt" "time" ) func main() { //获取时间戳 timestamp := time.Now().Unix() fmt.Println(timestamp) //格式化为字符串,tm为Time类型 tm := time.Unix(timestamp, 0) fmt.Println(tm.Format("2006-01-02 03:04:05 PM")) fmt.Println(tm.Format("02/01/2006 15:04:05 PM")) //从字符串转为时间戳,第一个参数是格式...阅读全文

博文 2015-03-20 03:00:01 baiyuxiong

golang日期字符串与时间戳转换

坑爹啊 网上搜的到都是坑爹代码 只好自己搞 //获取本地location toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写 timeLayout := "2006-01-02 15:04:05" //转化所需模板 loc, _ := time.LoadLocation("Local") //重要:获取时区 theTime, _ := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型 sr := theTime.Unix() //转化为时间戳 类型是int64 fm...阅读全文

博文 2015-06-17 20:23:32 u012210379

golang积累-时间、时区、格式的使用

以下文章转自自己的博客:http://blog.csdn.net/qq_26981997/article/details/53454606 , 对格式稍加整理。 前几天,因为需要实现海外服务端定时停机,涉及到时区的概念。网上搜索了一下,大部分都是谈time.Format中的Layout,非常不成体系,这里就简单总结一下其中的时间初始化、时区转化及格式转换。 开发中,我们对时间的使用是比较多的,其应用场景,按照使用概率,从大到小,通常是: 1. 获取当前或数据库中存储的时间 2. 比较两个时间点的先后 3. 显示打印时间 4. 时区转换 对应到go,也就是几个基本定义: 5. 时间点与时间段:Time,Duration。好比MVC中的M。 6...阅读全文

golang中的时间和时区

先写一段测试代码: const TIME_LAYOUT = "2006-01-02 15:04:05" func parseWithLocation(name string, timeStr string) (time.Time, error) { locationName := name if l, err := time.LoadLocation(locationName); err != nil { println(err.Error()) return time.Time{}, err } else { lt, _ := time.ParseInLocation(TIME_LAYOUT, timeStr, l) fmt.Println(locationName, lt) return...阅读全文

博文 2018-09-19 19:34:40 云上听风

Golang时区设置

在部署PHP项目的时候,在php的入口文件添加一行: date_default_timezone_set('PRC'); 时间格式化输出的时区为东八区北京时间,无需关系系统所在时区。 在Go语言上,go语言的time.Now()返回的是当地时区时间,直接用: time.Now().Format("2006-01-02 15:04:05") 输出的是当地时区时间。 go语言并没有全局设置时区这么一个东西,每次输出时间都需要调用一个In()函数改变时区: var cstSh, _ = time.LoadLocation("Asia/Shanghai") //上海 fmt.Println("SH : ", time.Now().In(cstSh).Format("2006-01-02 15:04:...阅读全文

博文 2018-05-23 16:33:07 hell0cat

Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案

一、解决方案: 方案一: orm.Debug = false orm.DefaultTimeLoc = time.UTC orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", "root:LPET6Plus@tcp(127.0.0.1:18283)/lpet6plusdb?charset=utf8&loc=Local") orm.RegisterModel(new(Versions)) orm.RegisterModel(new(Regversions)) orm.RegisterModel(new(Osversions)) 方案二: func init() { var dataso...阅读全文

博文 2016-04-10 09:05:09 songxingzhu

golang time

1 2 3 4 5 6 7 月日时分秒年时区标准以这个对应 const ( 43 ANSIC = "Mon Jan _2 15:04:05 2006" 44 UnixDate = "Mon Jan _2 15:04:05 MST 2006" 45 RubyDate = "Mon Jan 02 15:04:05 -0700 2006" 46 RFC822 = "02 Jan 06 15:04 MST" 47 RFC822Z = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone 48 RFC850 = "Monday, 02-Jan-06 15:04:05 MST" 49 RFC1123 = "Mon, 02 Jan 2006 15:04:0...阅读全文

博文 2014-10-04 19:26:01 ggaaooppeennngg

go 时间格式风格详解

一段代码 这里有一段代码 play 更能解说 layout. 可以看出, go 自动识别并转换 time 字符串是完全可能的. time package go 的time package 提供了time.Format函数,用来对时间进行格式化输出。 类似的还有time.Parse用来解析字符串类型的时间到time.Time。这是两个互逆的函数。 问题是,go 采用的格式化 layout 和我们以往所用的任何经验都不同。以至于初次接触总是一头雾 水。 其实 go 提供的这个 layout 对算法的实现非常科学高效,而且很规律。下面我们详细分解下。 直接上个对应表 前面是含义,后面是 go 的表示值,多种表示,逗号”,“分割 月份 1,01,Jan,January 日 2,02,_2 时 3,0...阅读全文

博文 2014-10-04 19:26:12 喻恒春

Mgo库的常见坑总结

mgo库是一个很好用的MongoDB驱动。对我们来说,主力数据库是MongoDB,因此这个驱动对我们来说也是非常重要的。但是,mgo库有些问题算是一些坑,这里我做了一些简单的整理。 一些关于bson.ObjectId的问题 ObjectId为空的判断 如果你看bson.ObjectId定义的话,它是一个string类型的数据。但是如果你直接定义一个结构,并且生成对象时,这个对象并不是这样的。 我们首先定义一个结构体: type Home struct { ID bson.ObjectId `bson:"_id,omitempty"` Name string `bson:"name"` } 然后看看一个生成的内容 h := Home{Name: "123"} fmt.Println(h.ID)...阅读全文

博文 2017-02-10 15:41:08 kevin

golang根据配置的时间和时区计算定时任务是否到了刷新时间

起因 思路 细化 遗留问题 起因 很多时候我们会碰到这样的需求,每天某个时候需要定时执行某个任务,比如定时发邮件、定时发推送消息等,而这个定时是针对当地时间的,比如每天中午12点发推送消息给玩家提醒可以上线领金币啦。 然而,中国的12点和越南的12点就不是同一个12点,所以需要通过时区计算是否到了该执行任务的时候。 思路 先来看一下如何根据时区计算约定的时间。假设现在需要晚上20点,执行任务,时区为西3时区。首先生成一个格林威治时间的20点 utcTime := time.Now().UTC() targetTime :=time.Date(utcTime.Year(),utcTime.Month(),utcTime.Day(), 20, 0, 0, 0, utcTime.Location(...阅读全文

博文 2016-11-04 14:00:04 changjixiong

Golang time包

参考 golang time 包的坑 一、定义 不同于 java 饱受诟病的各种乱七八糟的时间处理相关的包,golang 的 time 包的设计可谓相当精巧。time 包用来描述“时刻”的类型为 Time,其定义如下: type Time struct { // sec gives the number of seconds elapsed since // January 1, year 1 00:00:00 UTC. sec int64 // nsec specifies a non-negative nanosecond // offset within the second named by Seconds. // It must be in the range [0, 999999...阅读全文

博文 2019-01-29 00:34:45 懒皮

go设置时区

time包设置时区方法: ``` l,_ := time.LoadLocation("Asia/Shanghai") fmt.Println(time.Now().In(l)) l,_ = time.LoadLocation("America/Adak") fmt.Println(time.Now().In(l)) ``` LoadLocation 有个问题,它依赖于 IANA Time Zone Database (简称 tzdata 吧) 这个数据库,一般linux系统都带了,但是windows系统就没带。 没有 tzdata 就会从$GOROOT/中找。对于没有安装go环境的windows系统来说,就没办法通过 `LoadLocation` 设置时区。 但是也有办法,我们可以自己把tz...阅读全文

博文 2018-05-24 18:39:52 keepeye

Golang MySQL 时区的坑

在使用go-sql-driver操作 mysql 时,遇到了由于 mysql 与程序不在同一时区引发的问题 import "database/sql" import _ "github.com/go-sql-driver/mysql" db, err := sql.Open("mysql", "user:password@/dbname") 问题 想要把 time.Time 直接存储入库,需要开启解析时间parseTime db, err := sql.Open("mysql", "user:password@/dbname?charset=utf8mb4&parseTime=true") golang 程序里 time.Time 为 2018-12-24 18:00:00 CST 转为 U...阅读全文

博文 2018-12-29 17:34:45 UULU

golang时间

//获取本地location toBeCharge := "2015-01-01 00:00:00" //待转化为时间戳的字符串 注意 这里的小时和分钟还要秒必须写 因为是跟着模板走的 修改模板的话也可以不写 timeLayout := "2006-01-02 15:04:05" //转化所需模板 loc, _ := time.LoadLocation("Local") //重要:获取时区 theTime, _ := time.ParseInLocation(timeLayout, toBeCharge, loc) //使用模板在对应时区转化为time.time类型 sr := theTime.Unix() //转化为时间戳 类型是int64 fmt.Println(theTime) //打...阅读全文

博文 2016-08-03 13:00:00 zhangym

GoLang 日期时间格式化&反向日期时间

日期格式化时区 time := time.Now() loc, err := time.LoadLocation("") // 默认UTC loc, err := time.LoadLocation("Local") // 一般为CST loc, err := time.LoadLocation("America/Los_Angeles") // 美国洛杉矶PDT loc, _:= time.LoadLocation("Asia/Chongqing") // CST 获取当前时间并格式化 // 格式化 // golang中格式不是‘yyyy-MM-dd HH:mm:ss’,而是采用golang诞生时间作为格式 t = "2006-01-02 15:04:05" time := time.No...阅读全文

博文 2017-09-12 16:05:23 栈木头

数据库访问时区问题

今天是第二次跳进这个坑里面。 我要做的接口有一个需求,就是根据设定好的开始时间和结束时间过滤掉未开始和过期的内容。我用xorm作为ORM引擎进行数据库开发。直接一条解决了问题。当时还大概测了一下,没有任何问题。 Where("displayorder<>0 AND effectivetime< ? AND expirationtime> ?", time.Now(), time.Now()) 今天iOS开发要调用我的接口开发,因为我写的测试数据不完整,他叫测试配了几条测试数据。测试妹子很专业的,加了一条过期的,一条要显示的,一条未开始的,然后我这三条一条都没展示。。。 问题报给我之后,很明显就知道问题出在哪里了。肯定是那个Where查询错了。xorm支持记录SQL语句日志,一开始开发我就配置...阅读全文

博文 2017-02-09 12:24:57 Bryce

Golang中time.Parse和time.Format的时区问题

一、问题描述 time.Parse()的默认时区是UTC,time.Format()的时区默认是本地,两者如果不处理好就会导致错误。 package main import "time" import "fmt" func main(){ t, err := time.Parse("2006-01-02 15:04:05", "2017-12-03 22:01:02") if err != nil{ fmt.Println(err) return } fmt.Println(t) fmt.Println(time.Now()) fmt.Println(time.Now().Sub(t).Seconds()) } 输出: 2017-12-03 22:01:02 +0000 UTC 2017-1...阅读全文

博文 2019-05-03 01:34:37 风亡小窝

跨时区时间展示

最近作为小白在学习 golang,只能说更多的踩坑,才能更好的学习。 打算使用 go-web 写点练手的内容。 碰到一个问题,关于 mysql 时间存储时区的问题。 使用的是 goose 一个 database migration 工具,可以使用,无奈存的 mysql 时间是按照 UTC 时区的。 作为一个有点 PHP 经验的人来说,很简单嘛,改个 php.ini 配置,设置一下 date.timezone = PRC 就可以解决了。 但是不熟悉 golang 呀,只能 google 解决了。 goose 关于操作 mysql 这部分使用的 go-sql-driver/mysql,找到一个 issue ,就是报告了有这么一个 bug 。结论就是,我们就是使用 UTC 存的。。 We chan...阅读全文

博文 2017-04-19 07:00:45 dryyun

panic: time: missing Location in call to Time.In

前提 1、docker 空镜像(或类似环境) 2、Go 应用中 使用了 loc, _ := time.LoadLocation("Asia/Chongqing") 问题 $ go run ./xxx panic: time:missing Location in call to Time.In 原因 时间的位置信息是从本地文件系统中提取的,大多数系统都支持它,但还是取决于当前系统。具体的配置存储路径: $ cd /usr/share/zoneinfo 进入该目录就可以看到各时区的配置信息 $ ls +VERSION Australia EET Factory Greenwich Jamaica Mexico Poland US posixrules Africa Brazil EST GB ...阅读全文

go time 包操作数据库

可以通过time.LoadLocation的方式避免时区的变化 func TestStatsMsg(t *testing.T) { assert := assert.New(t) assert.NotNil(QQGroupMMgr) ti, _ := time.Parse("2006-01-02 15:04:05", "2016-10-08 00:00:00") persons := QQGroupMMgr.StatsMsg("茅", ti) assert.NotNil(persons) tz, _ := time.LoadLocation("UTC") for _, value := range persons { fmt.Println("StatsMsg---:", value.ID....阅读全文

博文 2016-10-31 12:00:01 guoer9973

Golang中time.Parse和time.Format的时区问题

Golang中time.Parse和time.Format的时区问题 发表于 2017-12-03 | 分类于 coding 一、问题描述在windows下,time.Parse()的时区和time.Format()的时区是一致的。 但是在linux环境下,time.Parse()的默认时区是UTC,time.Format()的时区默认是本地,两者如果不处理好就会导致错误。 12345678910111213package mainimport "time"import "fmt"func main(){ t, err := time.Parse("2006-01-02 15:04:05", "2017-12-03 22:01:02") if err != nil{ fmt.Println(...阅读全文

博文 2018-05-17 09:48:17 马谦的博客

golang时间操作的一些总结

前要:好记性不如烂笔头 目标一:时间戳转时间格式 过程:时间戳=>Time, Time=>需要的时间格式 timestamp := time.Now().Unix() fmt.Println("打印timestamp:", timestamp) tm := time.Unix(timestamp, 0) // 时间戳到时间格式 fmt.Println(tm.Format("2006-01-02 03:04:05 PM")) //12小时制 fmt.Println(tm.Format("02/01/2006 15:04:05 PM")) //24小时制 目标二:时间格式到时间戳的转换 过程:需要的时间格式=>Time,Time=>时间戳 standTime := tm.Format("2006...阅读全文

博文 2017-09-06 15:34:47 yulibaozicom

golang time 格式详解

神奇时刻:2006-01-02 15:04:05 1 官方文档 time package(需科学上网查看):https://golang.org/pkg/time/ 2 自定义时间格式 在看代码之前,先问一个关键问题:你懂 2006-01-02 15:04:05 么?不懂还是看代码吧! package main import ( "fmt" "time" ) func main() { // 使用系统默认格式打印当前时间 t1 := time.Now(); fmt.Println("t1:", t1) // 自定义格式,相当于Java中的时间格式:yyyy-MM-dd HH:mm:ss t2 := t1.Format("2006-01-02 15:04:05") fmt.Println("t...阅读全文

博文 2018-10-10 21:34:45 银冰雪千载

Golang解决XORM的时区问题

如果你升级使用了较为新版xorm(如v0.6.3)和go-sql-driver(如v1.3)的go类库,那么你就可能会遇到时区问题。 如 time.Parse("2006-01-02 15:04:05" ,"2018-01-15 12:11:12") // 2018-01-15T12:11:12+00:00 写入是数据库时候就会被改变为2018-01-15T20:11:12+00:00。 上述的就是时区问题,因为我们使用的是东8时区,默认会被设置为0时区,解决方案很简单,只需要在main函数中或者main包中初始化时区: time.LoadLocation("Asia/Shanghai") 数据库配置为 root:root@tcp(127.0.0.1:3306)/test?charset=u...阅读全文

博文 2018-01-16 11:33:04 梦朝思夕

Golang解决XORM的时区问题

如果你升级使用了较为新版`xorm`(如v0.6.3)和`go-sql-driver`(如v1.3)的go类库,那么你就可能会遇到时区问题。 如 ```go time.Parse("2006-01-02 15:04:05" ,"2018-01-15 12:11:12") // 2018-01-15T12:11:12+00:00 ``` 写入是数据库时候就会被改变为`2018-01-15T20:11:12+00:00`。 上述的就是时区问题,因为我们使用的是`东8时区`,默认会被设置为`0时区`,解决方案很简单,只需要在main函数中或者main包中初始化时区: ```go time.LoadLocation("Asia/Shanghai") ``` 数据库配置为 ``` root:root@...阅读全文

博文 2018-01-16 11:50:57 qiangmzsx

Kubernetes集群Pod使用Host的本地时区设置

Kubernetes集群搭建起来后,一直跑得很稳定。之前的关注点更多集中在安装、配置、组件调试方面,一些细枝末节被忽略了。Pod中时区的设置就是其中之一。今天腾出功夫打算解决一下这个问题。 一、问题现象 在我的Kubernetes 1.3.7集群的Master Node上,我们执行: # date Mon Feb 20 11:49:20 CST 2017 之后,在该Node上随意找到一个Pod中的Container,通过docker exec切入到容器内执行: # docker exec -it 1975d68de07a /bin/bash root@1975d68de07a:/# date Mon Feb 20 03:49:53 UTC 2017 我们发现Docker内输出的当前date与...阅读全文

博文 2017-05-01 14:35:56 bigwhite

解决XORM的时区问题

如果你升级使用了较为新版xorm(如v0.6.3)和go-sql-driver(如v1.3)的go类库,那么你就可能会遇到时区问题。 如 time.Parse("2006-01-02 15:04:05" ,"2018-01-15 12:11:12") // 2018-01-15T12:11:12+00:00 写入是数据库时候就会被改变为2018-01-15T20:11:12+00:00。 上述的就是时区问题,因为我们使用的是东8时区,默认会被设置为0时区,解决方案很简单,只需要在main函数中或者main包中初始化时区: time.LoadLocation("Asia/Shanghai") 数据库配置为 root:root@tcp(127.0.0.1:3306)/test?charset=u...阅读全文

博文 2018-07-02 12:23:11 梦朝思夕

http服务器header返回时间问题

![QQ20180127-120200@2x.png](https://static.studygolang.com/180127/8e4885b0e95e27feed0018ca91c0fa3d.png) 浏览器请求后response返回的Date是默认时区,并不是我所在地区的时区。 这个很奇怪,怎么解决呢? 我使用 `time.Now().String()` 输出的时间是对的。 代码如下: ``` package main import ( "net/http" "log" "encoding/json" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, ...阅读全文

Go_21: Golang 中 time 包的使用二

常量声明: const TimeLayout = "2006-01-02 15:04:05" 这是个奇葩,必须是这个时间点,据说是 go 诞生之日, 记忆方法:6-1-2-3-4-5 1. 获取当前时间戳 func GetCurrentSystemTimestamp() int64 { return time.Now().Unix() } 2. 获取当前 string 时间 func GetCurrentSystemTimeStr() string { return time.Now().Format(TimeLayout) } 3. 时间戳 转 string时间格式 func Timestamp2StandardTimeStr(timestamp int64) string { retur...阅读全文

博文 2017-11-14 07:00:01 liang1101

golang中time比较的时区问题

问题 最近发现程序中有一个时间代码比较老是不对 at, err := time.Parse("2006-01-02 15:04:05", authTime) if err != nil { return } nt := time.Now() fmt.Println(nt, at) if nt.After(at) { return } 打印nt和at后发现at明明在nt之前,但是nt.After返回了false. 原因 fmt.Println(nt.Unix(), at.Unix()) 打印nt和at的Unix时间戳后发现,at时间增加了8个小时.查看time.Parse文档后发现,这里解析的是UTC时间,与中国时间相差8个小时. 解决 使用time.ParseInLocation即可解决问题...阅读全文

博文 2018-10-23 12:34:39 pinecone

golang快速解析字符串日期为本地时间

// 默认解析到UTC时间 t, err := time.Parse("2006-01-02-03", "2018-11-12-08") if err != nil { log.Fatal(err) } log.Println(t) // 解析到本地时间需要指定时区 t, err = time.ParseInLocation("2006-01-02-03", "2018-11-12-08", time.Local) if err != nil { log.Fatal(err) } log.Println(t) // 输出 2018/11/22 08:56:57 2018-11-12 08:00:00 +0000 UTC 2018/11/22 08:56:57 2018-11-12 08:00...阅读全文

博文 2018-11-22 14:34:43 不浪人

golang 时间转换

时间的类型 date time timestampdata 2019-3-20 [15:04:05]time 2019-3-20 +0.23123 CSTtimestamp 1553069264t := time.Now() // 获取当前时间layout = "2006-01-02 [15:04:05]" // date格式12150405loc := time.LoadLocation("Location") //获取当前时区(1) time =>t.Format(layout) //time => datet.Unix() // time => timestamp(2)timestamp => timetime.Unix(timestamp,0) //(3)date => timeti...阅读全文

博文 2019-08-13 18:32:44 dullswords

Go package(1) time 用法

Go package(1) time 用法 golang使用的版本: go version go1.10.3 一:功能介绍 time的一些功能,比如时区,像linux中的定时器,时间计算等 格式化时间 时区(Location) 时间计算 Ticker Timer(定时器) Time一般分为时间Time 和 时段Duration 二:Time 结构体 time结构体定义: type Time struct { wall unit64 //表示距离公元1年1月1日00:00:00UTC的秒数 ext int64 //表示纳秒 loc *Location //代表时区,主要处理偏移量。因为不同的时区,对应的时间不一样 } 上面的loc表示时区, 那什么是时区呢?因为地球是圆的,所以同一个时刻,在地...阅读全文

博文 2019-06-30 13:02:37 九卷

golang 时间处理

时区 // 代表一个纳秒精度的时间点 var t time.Time; // 返回当前时间 t = time.Now(); // 时区 fmt.Printf("%v\n", t); // 返回反回所在时区 fmt.Printf("%v\n", t.Location()); // 返回UTC时间和UTC时区 fmt.Printf("%v %v\n", t.UTC(), t.UTC().Location()); // 同上,In()返回指定时区的时间 fmt.Printf("%v %v\n", t.In(time.UTC), t.In(time.UTC).Location()); // 返回当地时区的时间 fmt.Printf("%v %v\n", t.Local(), t.Local().Lo...阅读全文

博文 2019-07-11 19:32:39 战神悟空

golang time 包的坑

目录 前言 精巧的 time 坑点 结果解读 docker 中 总结 前言 为了不独享被炸断腿的懵逼,此处来一波无奖竞猜。 请不要编译运行下列代码,人肉计算程序运行结果: package main import "time" func main() { format := "20060102150405" // t1 没有写 time.Now() 是为了避免秒以下单位的时间的影响 // 除此之外和写 time.Now() 是一样的 t1 := time.Date(2017, time.November, 30, 0, 0, 0, 0, time.Local) t2, _ := time.Parse(format, t1.Format(format)) println("1-1 ", t1.F...阅读全文

博文 2019-08-04 20:03:39 Wolfogre's Blog