88 lines
1.5 KiB
Go
88 lines
1.5 KiB
Go
//go:build js
|
|
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
_ "time/tzdata"
|
|
)
|
|
|
|
func main() {
|
|
melTime, err := time.LoadLocation("Australia/Melbourne")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
sg, err := time.LoadLocation("Asia/Singapore")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
nyc, err := time.LoadLocation("America/New_York")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
la, err := time.LoadLocation("America/Los_Angeles")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
utc := time.UTC
|
|
|
|
clocks := []clock{
|
|
{
|
|
name: "UTC",
|
|
loc: utc,
|
|
elements: findClockElements("utc"),
|
|
},
|
|
{
|
|
name: "Australia/Melbourne",
|
|
loc: melTime,
|
|
elements: findClockElements("mel"),
|
|
},
|
|
{
|
|
name: "Asia/Singapore",
|
|
loc: sg,
|
|
elements: findClockElements("sg"),
|
|
},
|
|
{
|
|
name: "America/New_York",
|
|
loc: nyc,
|
|
elements: findClockElements("nyc"),
|
|
},
|
|
{
|
|
name: "America/Los_Angeles",
|
|
loc: la,
|
|
elements: findClockElements("la"),
|
|
},
|
|
}
|
|
|
|
updateClocks(clocks)
|
|
go startClockUpdater(clocks)
|
|
|
|
<-make(chan struct{})
|
|
}
|
|
|
|
func startClockUpdater(clocks []clock) {
|
|
for range time.Tick(1 * time.Second) {
|
|
updateClocks(clocks)
|
|
}
|
|
}
|
|
|
|
func updateClocks(clocks []clock) {
|
|
n := time.Now()
|
|
for _, c := range clocks {
|
|
updateClock(n, c)
|
|
}
|
|
}
|
|
|
|
func updateClock(t time.Time, clk clock) {
|
|
lt := t.In(clk.loc)
|
|
clk.elements.locationDiv.Set("innerText", clk.name)
|
|
clk.elements.dateDiv.Set("innerText", lt.Format("02 Jan 2006"))
|
|
clk.elements.timeDiv.Set("innerText", lt.Format("15:04:05"))
|
|
}
|