Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

time: Truncate() not truncating as expected for non-UTC times. #55921

Closed
c9845 opened this issue Sep 28, 2022 · 4 comments
Closed

time: Truncate() not truncating as expected for non-UTC times. #55921

c9845 opened this issue Sep 28, 2022 · 4 comments

Comments

@c9845
Copy link

c9845 commented Sep 28, 2022

What version of Go are you using (go version)?

$ go version 1.19 windows/amd64

Does this issue reproduce with the latest release?

Yes

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\USER\AppData\Local\go-build
set GOENV=C:\Users\USER\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\USER\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\USER\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.19
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=go.mod
set GOWORK=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=C:\Users\USER\AppData\Local\Temp\go-build3387395096=/tmp/go-build -gno-record-gcc-switches

What did you do?

I am located in the America/New_York time zone. I am using time.Truncate().

What did you expect to see?

time.Now().Truncate(24 * time.Hour) should output "2022-09-28 00:00:00 -0400 EDT".

What did you see instead?

time.Now().Truncate(24 * time.Hour) instead outputs "2022-09-28 20:00:00 -0400 EDT". Note the extra "20" hours.

@c9845
Copy link
Author

c9845 commented Sep 28, 2022

@seankhliao
Copy link
Member

Truncate operates on the time as an absolute duration since the zero time

Closing as working as intended (and documented)

@c9845
Copy link
Author

c9845 commented Sep 28, 2022

What is the suggested alternative for getting a non-UTC YYYY-MM-DD time.Time? Is doing time.Now().Format("2006-01-02") and then a time.Parse()` really the best option?

@ianlancetaylor
Copy link
Contributor

time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, 0, t.Location())

For further questions please don't use the issue tracker, please see https://go.dev/wiki/Questions. Thanks.

@golang golang locked and limited conversation to collaborators Sep 29, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants