猿问

如何将 `2022-11-20 21:00:00+0900` 格式化为 IST

我有一个时间戳,2022-11-20 21:00:00+0900现在我需要将其转换为 IST。所以我试过了


    loc, _ := time.LoadLocation("Asia/Calcutta")

    format := "Jan _2 2006 3:04:05 PM"

    timestamp := "2022-11-20 21:00:00+0900"

    ISTformat, err := time.ParseInLocation(format, timestamp,  loc)

    fmt.Println(ISTformat, err)

但它没有工作并给出错误cannot parse


我需要使用哪种类型的 golang 时间格式来执行此操作?


红糖糍粑
浏览 103回答 2
2回答

饮歌长啸

尝试以下    loc, _ := time.LoadLocation("Asia/Calcutta")    format := "2006-01-02 15:04:05-0700"    timestamp := "2022-11-20 21:00:00+0900"    // ISTformat, _ := time.ParseInLocation(format, timestamp, loc)    // fmt.Println(ISTformat)    parsed_time, _ := time.Parse(format, timestamp)    IST_time := parsed_time.In(loc)    fmt.Println("Time in IST", IST_time)请注意,您的format和timestamp应该采用相同的时间格式

沧海一幻觉

ParseInLocation 类似于 Parse,但在两个重要方面有所不同。首先,在没有时区信息的情况下,Parse 将时间解释为 UTC;ParseInLocation 将时间解释为给定位置。其次,当给定区域偏移量或缩写时,Parse 会尝试将其与本地位置进行匹配;ParseInLocation 使用给定的位置。**ParseInLocation 的格式是 ** func ParseInLocation(layout, value string, loc *Location) (Time, error)你试试这个例子package mainimport (    "fmt"    "time")func main() {    loc, _ := time.LoadLocation("Asia/Calcutta")    // This will look for the name CEST in the Asia/Calcutta time zone.    const longForm = "Jan 2, 2006 at 3:04pm (MST)"    t, _ := time.ParseInLocation(longForm, "Jul 9, 2012 at 5:02am (CEST)", loc)    fmt.Println(t)    // Note: without explicit zone, returns time in given location.    const shortForm = "2006-Jan-02"    t, _ = time.ParseInLocation(shortForm, "2012-Jul-09", loc)    fmt.Println(t)    return}
随时随地看视频慕课网APP

相关分类

Go
我要回答