golang将字符串"2024-03-07 16:00:00"转为时间戳
代码如下:
package main import ( "fmt" "time" ) func main() { // 定义时间格式,与字符串中的时间格式匹配 const layout = "2006-01-02 15:04:05" // 要转换的时间字符串 str := "2024-03-07 16:00:00" // 解析时间字符串
t, err := time.ParseInLocation(layout, str, time.UTC)
if err != nil { panic(err) // 如果解析出错,则抛出panic } // 转换为Unix时间戳(秒) timestamp := t.Unix() // 打印时间戳 fmt.Println(timestamp) }
在这个例子中,layout
常量定义了时间的格式,它必须与字符串"2024-03-07 19:00:00"
的格式相匹配。time.Parse
函数用于解析这个时间字符串,并返回一个time.Time
类型的值。然后,t.Unix()
方法将这个time.Time
值转换为Unix时间戳(秒为单位)。
如果字符串中的时间是本地时间,并且你想要获得UTC时间戳,你应该先调用t.UTC()
,然后再调用Unix()
方法。但是,如果字符串中的时间已经是UTC时间,那么你可以直接调用t.Unix()
而不需要额外的转换。在这个例子中,没有提及字符串时间是本地时间还是UTC时间,所以我们假设它代表的就是给定的时间点,不进行任何时区转换。如果需要转换,可以在解析之后根据具体情况添加时区转换的逻辑。
但是!!!最终输出了:1709913600
比实际的:1709884800多了八个小时,问题:在解析时间字符串,(time.ParseInLocation)的时候不应该使用time.UTC,应该使用time.Local
最终代码:
package main import ( "fmt" "time" ) func main() { // 定义时间格式,与字符串中的时间格式匹配 const layout = "2006-01-02 15:04:05" // 要转换的时间字符串 str := "2024-03-07 16:00:00" // 解析时间字符串 t, err := time.ParseInLocation(layout, str, time.Local) if err != nil { panic(err) // 如果解析出错,则抛出panic } // 转换为Unix时间戳(秒) timestamp := t.Unix() // 打印时间戳 fmt.Println(timestamp) }
输出正确!
标签:00,err,golang,Unix,时间,time,字符串,转为 From: https://www.cnblogs.com/T8888/p/18061613