Linux 在 GlobalConfiguration 中指定非本地时区失败
Specifying non-local time zone in GlobalConfiguration fails on Linux
我的测试将 运行 分布在美国各地的各种 machines/containers 上,所以我希望他们都以东部时间记录他们的时间。如果我这样做:
AtataContext.GlobalConfiguration.UseTimeZone(System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))
我所有由 Windows 机器生成的日志都工作正常,但在 linux (Debian 11) 中我得到这个:
Error Message:
OneTimeSetUp: System.TimeZoneNotFoundException : The time zone ID 'Eastern Standard Time' was not found on the local computer.
----> System.IO.FileNotFoundException : Could not find file '/usr/share/zoneinfo/Eastern Standard Time'.
我还需要做些什么来同步所有日志的时区吗?
这个有效:
using System;
TimeZoneInfo ET;
if (WebDriverSetup.OSInfo.IsWindows)
{
ET = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
}
else
{
ET = TimeZoneInfo.FindSystemTimeZoneById("US/Eastern");
}
AtataContext.GlobalConfiguration.UseTimeZone(ET);
前面的回答是正确的。您可以根据当前 OS 找到不同名称的时区。但除此之外还有另一种解决方案。
您可以将 TimeZoneConverter
NuGet 包添加到项目中,并使用其 TZConvert
class 查找 Windows 或 Linux 时间的时区区域 ID.
AtataContext.GlobalConfiguration.UseTimeZone(TZConvert.GetTimeZoneInfo("US/Eastern"));
我的测试将 运行 分布在美国各地的各种 machines/containers 上,所以我希望他们都以东部时间记录他们的时间。如果我这样做:
AtataContext.GlobalConfiguration.UseTimeZone(System.TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"))
我所有由 Windows 机器生成的日志都工作正常,但在 linux (Debian 11) 中我得到这个:
Error Message:
OneTimeSetUp: System.TimeZoneNotFoundException : The time zone ID 'Eastern Standard Time' was not found on the local computer.
----> System.IO.FileNotFoundException : Could not find file '/usr/share/zoneinfo/Eastern Standard Time'.
我还需要做些什么来同步所有日志的时区吗?
这个有效:
using System;
TimeZoneInfo ET;
if (WebDriverSetup.OSInfo.IsWindows)
{
ET = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");
}
else
{
ET = TimeZoneInfo.FindSystemTimeZoneById("US/Eastern");
}
AtataContext.GlobalConfiguration.UseTimeZone(ET);
前面的回答是正确的。您可以根据当前 OS 找到不同名称的时区。但除此之外还有另一种解决方案。
您可以将 TimeZoneConverter
NuGet 包添加到项目中,并使用其 TZConvert
class 查找 Windows 或 Linux 时间的时区区域 ID.
AtataContext.GlobalConfiguration.UseTimeZone(TZConvert.GetTimeZoneInfo("US/Eastern"));