golang,time.Parse(“ 11:22 PM”)我可以进行数学运算的东西

Iri*_*ngo 2 time go

我正在导入很多格式的字段:

09:02 AM
10:02 AM
12:30 PM
04:10 PM
04:50 PM
05:30 PM

我想将字段转换为可以做算术的东西。例如,对事件发生的时间进行倒计时。因此,以微秒或什至秒来保存字段。我一直在努力争取时间。解析工作……没有乐趣。

fmt.Println(time.Parse("hh:mm", m.Feed.Entry[i].GsxA100Time.T))
Run Code Online (Sandbox Code Playgroud)

返回...

0001-01-01 00:00:00 +0000 UTC解析时间“ 07:50 PM”为“ hh:mm”:无法解析“ 07:50 PM”为“ hh:mm”

有什么建议么?

ANi*_*sus 5

的布局字符串time.Parse不处理"hh:mm"格式。在您的情况下,布局字符串应该"03:04 PM"像您在文档中看到的那样。

time.Duration在解析字符串后得到一个,可以用参考时间减去您的时间,在这种情况下,我假设"12:00 AM"

工作示例:

package main

import (
    "fmt"
    "time"
)

func main() {
    ref, _ := time.Parse("03:04 PM", "12:00 AM")
    t, err := time.Parse("03:04 PM", "11:22 PM")
    if err != nil {
        panic(err)
    }

    fmt.Println(t.Sub(ref).Seconds())
}
Run Code Online (Sandbox Code Playgroud)

输出:

84120

操场

  • @IrishGringo:这是因为 Go 使用不同的方式来定义布局。Go 不使用“hh”和“mm”等占位符(这是在其他语言中编写时间格式布局的常见方法),而是使用*参考日期*;更准确地说,“2006 年 1 月 2 日星期一 15:04:05 -0700 MST”。按照您希望的显示方式输入*特定*日期和时区,您就拥有了布局字符串!*参考日期*始终是下午 3:04 (15:04),而不是上午 (03:04)。始终是 MST,而不是 GMT。总是星期一,从不星期二。等等。 (2认同)