Go 时间以字符串的形式表示。时间

Go 时间以字符串的形式表示。时间,go,Go,我有一个格式为07:00:00澳大利亚/墨尔本的时间字符串,我想将其转换为相应的美国/纽约时间。我尝试了以下代码: func parseLocation(timeStr string, location string) { loc, err := time.LoadLocation(location) if err != nil { log.Fatal(err) } var parsedTime time.Time hour, err :=

我有一个格式为
07:00:00澳大利亚/墨尔本
的时间字符串,我想将其转换为相应的
美国/纽约
时间。我尝试了以下代码:

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。时间给了我
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)

现在可以将时间转换到所需的位置。但是,当您有时间hh:mm:ss在字符串中,并将其转换为time.time,然后在所需位置进行解析时是很困难的。这就是我一直在寻找的。现在()。在(位置)应该可以工作。我不明白问题的其余部分,这不是你上面描述的吗?我不想转换时间。Now()根据提供的答案,这是可能的,但我想转换时间为
07:00:00澳大利亚/墨尔本
格式。编辑了这个问题。我希望是clearAFAIK,没有办法解析/格式化位置信息。你所做的是我所知道的最简单的方法。时间格式适用于偏移量或时区,而不是位置。@BurakSerdar:对于不同的当地时间差异,您的答案没有意义。因为夏时制,当地时间的差异也不同。因此,如果没有日期,您的问题就没有答案。夏令时过渡日期不同导致当地时间不同的一个例子: