package main
import (
"flag"
"time"
"fmt"
)
var (
timeStr = flag.String("t", "06/2010", "")
isBeijing = flag.Bool("isBeijing", false, "")
)
func main() {
flag.Parse()
t := GetTimestampFormatString(*timeStr, "01/2006")
fmt.Printf("isBeijing:%v,t:%v, beijing:%v, Mexico:%v\n", *isBeijing, t, MDateMHS(t, "Asia/Shanghai"), MDateMHS(t, "America/Mexico_City"))
}
func GetTimestampFormatString(times, format string) int64 {
timezone := GetServiceTimezone()
local, _ := time.LoadLocation(timezone)
parse, _ := time.ParseInLocation(format, times, local)
return parse.UnixNano() / 1000000
}
func GetServiceTimezone() (timezone string) {
timezone = "America/Mexico_City"
if *isBeijing {
timezone = "Asia/Shanghai"
}
return
}
func MDateMHS(timestamp int64, timeZone string) string {
tmp := timestamp / 1000
if tmp <= 0 {
return "-"
}
tm := time.Unix(tmp, 0)
local, _ := time.LoadLocation(timeZone)
return tm.In(local).Format("2006-01-02 15:04:05")
}
2月1号,有点特殊
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=true -t=02/2010
isBeijing:true,t:1264953600000, beijing:2010-02-01 00:00:00, Mexico:2010-01-31 10:00:00
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=false -t=02/2010
isBeijing:false,t:1265004000000, beijing:2010-02-01 14:00:00, Mexico:2010-02-01 00:00:00
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=false -t=02/2012
isBeijing:false,t:1328076000000, beijing:2012-02-01 14:00:00, Mexico:2012-02-01 00:00:00
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=true -t=02/2012
isBeijing:true,t:1328025600000, beijing:2012-02-01 00:00:00, Mexico:2012-01-31 10:00:00
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=true -t=05/2012
isBeijing:true,t:1335801600000, beijing:2012-05-01 00:00:00, Mexico:2012-04-30 11:00:00
dev@dev-VirtualBox ) $
dev@dev-VirtualBox ) $
dev@dev-VirtualBox ) $ go run debug/main.go -isBeijing=false -t=05/2012
isBeijing:false,t:1335848400000, beijing:2012-05-01 13:00:00, Mexico:2012-05-01 00:00:00