go: time: Parse behaves inconsistently when parsing numerical timezones with an "MST" format string
What version of Go are you using (go version
)?
Local machine:
$ go version go version go1.12 darwin/amd64
Docker container:
$ go version go version go1.12 linux/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 GOARCH="amd64" GOBIN="" GOCACHE="/Users/nmooney/Library/Caches/go-build" GOEXE="" GOFLAGS="" GOHOSTARCH="amd64" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/nmooney/go" GOPROXY="" GORACE="" GOROOT="/usr/local/Cellar/go/1.12/libexec" GOTMPDIR="" GOTOOLDIR="/usr/local/Cellar/go/1.12/libexec/pkg/tool/darwin_amd64" GCCGO="gccgo" CC="clang" CXX="clang++" CGO_ENABLED="1" GOMOD="" CGO_CFLAGS="-g -O2" CGO_CPPFLAGS="" CGO_CXXFLAGS="-g -O2" CGO_FFLAGS="-g -O2" CGO_LDFLAGS="-g -O2" PKG_CONFIG="pkg-config" GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/vv/t3z4pbwn3pd36hm89fg1m8jc0000gn/T/go-build118701068=/tmp/go-build -gno-record-gcc-switches -fno-common"
What did you do?
I attempted to use the time.Parse
format string "Mon, 2 Jan 2006 15:04:05 MST"
to parse the date "Tue, 12 Mar 2019 15:34:39 -0000"
.
What did you expect to see?
I would expect time.Parse
to fail to parse the string, since it’s suffixed with -0000
rather than an alphabetical time zone designator.
This behaves correctly when I try to parse a date with a non-zero offset, such as "Tue, 12 Mar 2019 15:34:39 -0700"
(i.e. parsing fails).
What did you see instead?
time.Parse
successfully parses date strings with TZ offsets of zero given a format string that ends with MST
, when it should likely fail if there is no alphabetical timezone designator.
About this issue
- Original URL
- State: open
- Created 5 years ago
- Reactions: 1
- Comments: 18 (11 by maintainers)
This will be necessary anyway to fix #26032. For example, if you zdump
Asia/Kabul
you get:which
time.Parse
mistakenly rejects because it doesn’t like the+0430
part.