commit
This commit is contained in:
49
cmd/xb/main.go
Normal file
49
cmd/xb/main.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TzStrToOffset(ianaZone string) (string, error) {
|
||||
loc, err := time.LoadLocation(ianaZone)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("无法加载时区 %s: %v", ianaZone, err)
|
||||
}
|
||||
|
||||
t := time.Date(2025, time.October, 28, 0, 0, 0, 0, loc)
|
||||
|
||||
_, offsetSeconds := t.Zone()
|
||||
|
||||
offset := time.Duration(offsetSeconds) * time.Second
|
||||
|
||||
// 格式化偏移量。time.Time.Format() 无法直接将 Location 格式化成 UTC+HH:MM,
|
||||
// 因此我们需要手动计算并格式化。
|
||||
sign := "+"
|
||||
if offsetSeconds < 0 {
|
||||
sign = "-"
|
||||
offset = -offset // 确保偏移量为正值进行计算
|
||||
}
|
||||
|
||||
hours := int(offset.Hours())
|
||||
minutes := int(offset.Minutes()) % 60
|
||||
|
||||
// 最终的格式化字符串
|
||||
utcOffsetString := fmt.Sprintf("%s%02d%02d", sign, hours, minutes)
|
||||
|
||||
return utcOffsetString, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
ianaZone := "Asia/Shanghai"
|
||||
ianaZone = "UTC"
|
||||
|
||||
utcOffsetString, err := TzStrToOffset(ianaZone)
|
||||
if err != nil {
|
||||
log.Fatalf("错误: %v", err)
|
||||
}
|
||||
|
||||
fmt.Printf("IANA 时区: %s\n", ianaZone)
|
||||
fmt.Printf("UTC 偏移量: %s\n", utcOffsetString)
|
||||
}
|
||||
Reference in New Issue
Block a user