在 MSYS 中更改时区

Posted

技术标签:

【中文标题】在 MSYS 中更改时区【英文标题】:Changing timezone in MSYS 【发布时间】:2010-04-01 19:21:14 【问题描述】:

如果我只安装了“日期”命令,如何在 Windows 的 MSYS+MinGW 上更改时区?这里没有“tzconfig”或“tzselect”。

当我尝试 $date --set="Apr 01 23:08 UTC+04:00" 我收到 19:08 GMT+0 的结果。

这对我来说非常重要,因为“make”命令总是给我关于将来修改文件的错误。

【问题讨论】:

属于 superuser.com MSYS 使用 Windows 日期/时间。如果您需要更改这些,请通过 Windows 控制面板进行。 不,MSYS 看不到 Windows 设置! @d9K 我刚刚通过控制面板更改了我的 Windows 时间,启动了一个新的 MSYS bash shell,然后运行了 date 命令。更改反映在 date 命令的输出中。 @d9k 好吧,我能说什么?我不是在编造这个。您认为 MSYS 还会从哪里获取日期/时间? 【参考方案1】:

我遇到了同样的问题。我的时区是 CET (GMT+1)。

我已经通过设置环境变量 TZ 解决了这个问题,如下所示:

export TZ=CET-1CEST

在设置变量之前:

(dos 提示符)

c:\>time
Huidige tijd: 17:08:32,40

(msys 外壳)

$ date
Mon Oct 25 15:08:54 GMT 2010

设置 TZ=CET-1CEST 后变为:

(dos 提示符)

c:\>time
Huidige tijd: 17:14:30,80

(msys 外壳)

$ export TZ=CET-1CEST
$ date
Mon Oct 25 17:15:05 CEST 2010

这个变量中的字段是

CET:您的时区名称 +/-x:从您的时区到 GMT 的小时偏移量(在我的示例中,GMT 在 CET 上滞后一小时) CEST:启用夏令时的时区名称 (可选)+/-y:从夏令时 (DST) 的时区到 GMT 的小时偏移量。默认为整点,因此您可以跳过它。

请注意,第一个和第三个字段仅用于在日期字符串中显示。如果您愿意,也可以将其设置为 FOO 和 BAR,它是执行实际时间修改的第二个(也可以是第四个)字段。

该参数可以使用更多字段来定义 DST 的开始和结束时间。如果您想了解更多相关信息,请参阅this page。

【讨论】:

【参考方案2】:

这是从我的电脑上复制和粘贴的。启动 Windows cmd.exe 提示符 - 然后:

d:\Users\NeilB>time
The current time is: 20:59:27.68
Enter the new time: 21:59

然后切换到 MSYS bash shell:

[neilb@GONERIL NeilB]$ date
Thu Apr  1 21:59:31 GMTDT 2010

请注意时间已更改。这也适用于控制面板。

【讨论】:

好的,它改变了时间,但仍然在其他时区。因此,当我在 cmd 中将其更改为 0:26 时,我在 MSYS 中得到 20:26。当我在 MSYS 中将时间更改为 0:26 时,我在 Windows 中得到 4:26。所以我需要一种从 MSYS 控制台更改时区的方法。 @d9K 所以您希望 MSYS bash 提示符和 Windows 位于不同的时区?我不认为这是可能的。 MSYS 不是操作系统,没有自己的时间、日期或时区的概念。 @anon:日期和时间是系统的,但是MSYS可以决定时区,你甚至可以在不同的时区有多个MSYS窗口。【参考方案3】:

我遇到了同样的时区问题。我最好的方法是使用 : date --date="4 hours ago" ,其中 -4h 是我的时区...它可以为我的东西加上时间戳,但我不确定它是否对我有任何帮助“制作”...

【讨论】:

【参考方案4】:

为了记录,除了 Geert 的出色回答之外,以下是我添加到我的 ~/.bash_profile 中的内容,居住在法国:

export TZ=CET-1CEST-2

而且效果很好。

【讨论】:

以上是关于在 MSYS 中更改时区的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 MSYS2 上的 HOME 目录和启动目录?

在Java中更改时区而不更改时间

如何在 iPhone 模拟器中更改时间和时区?

如何在 Ruby 中更改 DateTime 的时区?

如何在 Linux Time 中更改时区? [复制]

如何更改 docker 容器中的时区?