75 lines
2.5 KiB
Go
75 lines
2.5 KiB
Go
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"log"
|
||
"time"
|
||
|
||
"git.toowon.com/jimmy/go-common/datetime"
|
||
)
|
||
|
||
func main() {
|
||
// 示例1:将当前时间转换为UTC
|
||
fmt.Println("=== Example 1: Convert Current Time to UTC ===")
|
||
now := time.Now()
|
||
utcTime := datetime.ToUTC(now)
|
||
fmt.Printf("Local time: %s\n", datetime.FormatDateTime(now))
|
||
fmt.Printf("UTC time: %s\n", datetime.FormatDateTime(utcTime))
|
||
|
||
// 示例2:从指定时区转换为UTC
|
||
fmt.Println("\n=== Example 2: Convert from Specific Timezone to UTC ===")
|
||
// 解析上海时区的时间
|
||
shanghaiTime, err := datetime.ParseDateTime("2024-01-01 12:00:00", datetime.AsiaShanghai)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
fmt.Printf("Shanghai time: %s\n", datetime.FormatDateTime(shanghaiTime, datetime.AsiaShanghai))
|
||
|
||
// 转换为UTC
|
||
utcTime2, err := datetime.ToUTCFromTimezone(shanghaiTime, datetime.AsiaShanghai)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
fmt.Printf("UTC time: %s\n", datetime.FormatDateTime(utcTime2, datetime.UTC))
|
||
|
||
// 示例3:解析时间字符串并直接转换为UTC
|
||
fmt.Println("\n=== Example 3: Parse and Convert to UTC ===")
|
||
utcTime3, err := datetime.ParseDateTimeToUTC("2024-01-01 12:00:00", datetime.AsiaShanghai)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
fmt.Printf("Parsed from Shanghai timezone, UTC: %s\n", datetime.FormatDateTime(utcTime3, datetime.UTC))
|
||
|
||
// 示例4:解析日期并转换为UTC
|
||
fmt.Println("\n=== Example 4: Parse Date and Convert to UTC ===")
|
||
utcTime4, err := datetime.ParseDateToUTC("2024-01-01", datetime.AsiaShanghai)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
fmt.Printf("Date parsed from Shanghai timezone, UTC: %s\n", datetime.FormatDateTime(utcTime4, datetime.UTC))
|
||
|
||
// 示例5:数据库存储场景
|
||
fmt.Println("\n=== Example 5: Database Storage Scenario ===")
|
||
// 从请求中获取时间(假设是上海时区)
|
||
requestTimeStr := "2024-01-01 12:00:00"
|
||
requestTimezone := datetime.AsiaShanghai
|
||
|
||
// 转换为UTC时间(用于数据库存储)
|
||
dbTime, err := datetime.ParseDateTimeToUTC(requestTimeStr, requestTimezone)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
|
||
fmt.Printf("Request time (Shanghai): %s\n", requestTimeStr)
|
||
fmt.Printf("Database time (UTC): %s\n", datetime.FormatDateTime(dbTime, datetime.UTC))
|
||
|
||
// 从数据库读取UTC时间,转换为用户时区显示
|
||
userTimezone := datetime.AsiaShanghai
|
||
displayTime, err := datetime.ToTimezone(dbTime, userTimezone)
|
||
if err != nil {
|
||
log.Fatal(err)
|
||
}
|
||
fmt.Printf("Display time (Shanghai): %s\n", datetime.FormatDateTime(displayTime, userTimezone))
|
||
}
|
||
|