package main import ( "fmt" "log" "time" "github.com/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)) }