登录
首页 >  Golang >  Go问答

将时间字符串转换为 time.Time 格式

来源:stackoverflow

时间:2024-02-27 13:00:23 150浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《将时间字符串转换为 time.Time 格式》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我有一个格式为 07:00:00 australia/melbourne 的时间字符串,我想将其转换为相应的 america/new_york 时间。我尝试过以下代码:

func parseLocation(timeStr string, location string) {
    loc, err := time.LoadLocation(location)
    if err != nil {
        log.Fatal(err)
    }
    var parsedTime time.Time
    hour, err := strconv.Atoi(timeStr[:2])
    if err != nil {
        log.Errorf("error converting to int %v", err)
    }
    if hour >= 10 {
        parsedTime, err = time.ParseInLocation("15:04:05", timeStr, loc)
    } else {
        parsedTime, err = time.ParseInLocation("03:04:05", timeStr, loc)
    }
    if err != nil {
        log.Errorf("error parsing %v", err)
    }
    americaLocation, _ := time.LoadLocation("America/New_York")
    resultTime := parsedTime.In(americaLocation)
    return resultTime
}

func main(){
    x := strings.Split("07:00:00 Australia/Melbourne", " ")
    parseLocation(x[0], x[1])
}

及时转换 hh:mm:ss。time 给了我 0000-01-01 07:00:00 +0000 utc,我需要将其转换为其他时区,最终给出模糊的输出。

我想以 time.time 格式解析 "07:00:00" 形式的时间格式。任何以更好的方式做到这一点的建议将不胜感激。谢谢!


解决方案


通过这个时间算术,您将得到负时间值。看起来对于负时间的结果没有明确定义。如果您以当前日期为基准,一切似乎都有效。解析时间后:

now:=time.Now()
parsedTime=time.Date(now.Year(),now.Month(),now.Day(),parsedTime.Hour(),parsedTime.Minute(),parsedTime.Second(),parsedTime.Nanosecond(),loc)
americaLocation, _ := time.LoadLocation("America/New_York")
resultTime := parsedTime.In(americaLocation)

今天关于《将时间字符串转换为 time.Time 格式》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>