首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得时间戳之间的差异(字符串或time.time)

如何获得时间戳之间的差异(字符串或time.time)
EN

Stack Overflow用户
提问于 2019-05-21 14:49:41
回答 1查看 672关注 0票数 1

我有一个问题:我需要知道戈朗两个时间戳之间的区别/持续时间。因此,我使用时间库(https://golang.org/pkg/time/)。

如果我有两个"time.time“类型的时间戳,那么使用"time.Sub()”很容易得到区别。我的问题是,我的时间戳之一来自另一个函数,它只能以字符串的形式传输:

t1 := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001“//type: string t2 := time.Now() //type: time.time

现在我要讲的是基本的可能性:

( A)将t2转换为字符串,并试图找出两个字符串(丑陋)之间的区别。

B)将t1从"string“类型转换为"time.time”类型,然后应用"time.Sub()“

我想走B路)。因此,我发现

Time.Parse(格式,时间字符串)

应该能够做到这一点。因此,我尝试使用

t1_time,err := time.Parse(time.RFC3339,t1)

但结果并不像预期的那样!相反,我得到了这个

0001-01-01 :00:00 +0000协调世界时

“错误解析时间"2009-11-10 23:00:02 +0000 UTC m=+2.000000001”2006-01-02T15:04:05Z07:00":不能将“23:00:02 +0000 UTC m=+2.000000001”解析为"T“。

如果我使用与t1相同的自己的时间格式

时间格式:= "2009-11-10 23:00:00 +0000 UTC m=+0.000000001“ t1_time,err := time.Parse(时间格式,t1)

结果仍然是错误的,我得到的错误是“错误解析时间"2009-11-10 23:00:02 +0000 UTC m=+2.000000001”2009-11-10 23:00 +0000 UTC m=+0.000000001":无法将"9-11-10 23:00:02 +0000 UTC m=+2.000000001“解析为"009-”。

我还试图浏览unix time,但是时间库不允许我将字符串转换为UNIX。

我做错什么了?!为什么解析不起作用?谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 15:24:20

基本上你想:

代码语言:javascript
复制
    t1_raw := "2009-11-10 23:00:00 +0000 UTC m=+0.000000001"
    format := "2006-01-02 15:04:05 -0700 MST"

    // for simplicity t1_raw[:29] discards time's monotonic delta
    // i.e. the " m=+0.000000001" suffix

    t1, err := time.Parse(format, t1_raw[:29])
    if err != nil {
            log.Fatal(err)
    }

    log.Println("Duration ->", t2.Sub(t1))

如果您确实希望包含单调增量,则必须手动解析该数字,并将增量应用于t1

操场版本

注意:游乐场版本将显示持续时间为零--当操场的时钟从Nov 11 2009开始时-- go的开创性生日。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56240944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档