Turns out I wasn't using TZ in the right way. One of the formats for TZ is std offset, where std string specifies the name of the time zone (such as EDT, PDT, KST, or JST) and offset is the time that should be added to get UTC. In this format, you specify the time zone information directly, which means, it is your responsibility to specify the correct time zone information. Below demonstrates how this format works: $ TZ=UTS-3 date $ TZ=KST-7:30 date $ TZ=JST+12:22:12 date Thanks for you response anyway, and sorry for the noise. On Mon, Apr 1, 2019 at 8:38 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Chanseok Oh <chanseok@xxxxxxxxxx> writes: > > > BROKEN: anything other than UTC reports wrong date. > > > > $ TZ=KST git log '--date=format-local:%Y%m%d %H%M%S %z (%Z)' > > --format=%cd -n1 > > 20190401 210250 +0000 (KST) > > I think you are probably on a system where timezones can be given > only with a more modern and unambiguous style and not in the > potentially ambiguous abbreviated form. Here is one experiment to > show what I mean: > > $ TZ=KST date > Tue Apr 2 00:29:51 KST 2019 > $ TZ=JST date > Tue Apr 2 00:29:51 JST 2019 > $ TZ=Asia/Tokyo date > Tue Apr 2 09:29:51 JST 2019 > > Two points to be learned from the above exercise are: > > - It is not limited to your copy of "git". Even a system supplied > command like "date" does not work with "JST" but it can grok > Asia/Tokyo just fine ("JST" does not necessarily have to be > "Japan standard time"; it could be Jamaican ;-)). > > - It is not limited to KST (is that Kabul standard time? Khartoum? > Kinshasa?). > > Perhaps try TZ=Asia/Seoul or something?