git bash date 命令忽略 TZ env

问题描述 投票:0回答:1

date(1) 命令应该从 TZ 环境变量中获取时区。事实上,这是联机帮助页中的一个示例:

68 mak:> date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Fri Oct 20 09:00:00 GMT 2023

采取变化:

69 mak:> TZ='America/Los_Angeles' date
Mon Oct 16 16:03:03 GMT 2023

正如您所看到的,在这两种情况下,日期(1)均使用“GMT”报告。就我而言,我于上午 11:03 在美国/芝加哥运行了这些命令。

我所期望的是通过 TZ 表达的时间:

108 mak:> date --date='TZ="America/Los_Angeles" 09:00 next Fri'
Fri Oct 20 11:00:00 CDT 2023

109 mak:>  TZ='America/Los_Angeles' date
Mon Oct 16 09:46:44 PDT 2023`
bash datetime localization git-bash ksh
1个回答
0
投票

因此,即使设置了 TZ,date(1) 也会回到 GMT,因为在 gitbash 上,zoneinfo 数据的默认目录是空的。

为了解决这个问题,我从 github 上的 zoneinfo 存储库中获取数据,并将 zoneinfo 目录复制到 /use/share/zoneinfo

112 mak@:> ll -d /usr/share/zoneinfo/*
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Africa/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/America/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Antarctica/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Arctic/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Asia/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Atlantic/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Australia/
drwxr-xr-x 1 mak 197121     0 Oct 16 11:30 /usr/share/zoneinfo/Brazil/
...

date 立即找到数据并利用它来得到正确的结果。

110 mak:> echo $TZ
America/Chicago
111 mak:> date
Mon Oct 16 12:08:11 CDT 2023
© www.soinside.com 2019 - 2024. All rights reserved.