go-timezone-local

module
v0.0.0-...-c1acb60 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 25, 2023 License: Unlicense

README

Get the full name of your local time zone (OS setting)

Works on windows, linux and macos

Why?

built-in functionality sometimes won't suffice:

    zone, _ := time.Now().Zone() // try to get my time zone...
    loc, _ := time.LoadLocation(zone)
    fmt.Println(zone, loc) // prints e.g. CEST UTC -> obviously wrong!

localizing a date with obtained loc will cause

panic: time: missing Location in call to Date


Package Usage

go get github.com/thlib/go-timezone-local/tzlocal

See it in action:

Open your project folder
Create a file main.go

package main

import (
    "fmt"
    "time"

    "github.com/thlib/go-timezone-local/tzlocal"
)

func main() {
    tzname, err := tzlocal.RuntimeTZ()
    fmt.Println(tzname, err)

    // example:
    // tzname = "Europe/Berlin"

    // now you can use tzname to properly set up a location:
    loc, _ := time.LoadLocation(tzname)

    d0 := time.Date(2021, 10, 30, 20, 0, 0, 0, loc) // DST active:
    fmt.Println(d0)
    // 2021-10-30 20:00:00 +0200 CEST

    d1 := d0.AddDate(0, 0, 1) // add one day, now DST is inactive:
    fmt.Println(d1)
    // 2021-10-31 20:00:00 +0100 CET
}

Run the following commands:

go mod init example.com/yourpackage
go mod vendor
go run main.go

It should print the go runtime timezone.

For contributors to update the list of time zones on windows

Clone github.com/thlib/go-timezone-local
Change directory to go-timezone-local

cd go-timezone-local
go generate ./...

Credits

All credit goes to colm.anseo and MrFuppes for providing the following answers:

Directories

Path Synopsis
Code generated by tzlocal/update_tzmapping.go DO NOT EDIT.
Code generated by tzlocal/update_tzmapping.go DO NOT EDIT.
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL