在 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 中更改时区的主要内容,如果未能解决你的问题,请参考以下文章