dongwei1895 2017-06-20 05:20
浏览 146

在Go中解析时间戳

I'm calling a service based on the JSON SIRI API, which is returning timestamps in the format

"ResponseTimestamp": "/Date(1497923363000+0930)/"

which looks like milliseconds since the Unix epoch, plus the local time zone offset.

Do the standard Go packages include a means to parse this format, and if so, what is it?

I have searched this site and others for terms such as parse, golang, timestamp, ticks, epoch. It gets mentioned in the context of JavaScript, but not Go. I have looked in the Go source code for the packages, but haven't found any reference to this format.

I can code my own function to do this, but I thought a parser for the format would be included with Go.

  • 写回答

1条回答 默认 最新

  • dongyu9894 2017-06-20 05:54
    关注

    Perhaps, but in case it's not, here's how you can do it yourself:

    pattern := regexp.MustCompile(`\A/Date\((\d+)([+-]\d+)\)/\z`)
    m := pattern.FindStringSubmatch(res.ResponseTimestamp)
    if len(m) == 0 {
        // Handle error: not a datetime in the expected format
    }
    
    // Get the milliseconds part
    ms, err := strconv.Parseint(m[1], 10, 64)
    // Handle err (in the rare case of, say, an out of range error)
    
    // Use Go's time parser to parse the timezone part
    tForLoc, err := time.Parse("-0700", m[2])
    // Handle err (invalid timezone spec)
    
    // Combine the milliseconds, the timezone, and the Unix epoch
    t := time.Date(1970, 1, 1, 0, 0, 
        int(ms/1000), int((ms%1000)*1e6, tForLoc.Location())
    
    return t
    
    评论

报告相同问题?

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算