【发布时间】:2017-05-24 19:10:22
【问题描述】:
例如,当我尝试执行以下操作时。
TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time")
我收到错误消息,TimeZone 在本地计算机上不可用。当我在本地运行它时,它可以工作,但我在 Windows 上运行它。部署后,它在 Nginx 中的 Unix 机器上运行。我可以看到FindSystemTimeZoneById 在涉及 Unix 时正在查找错误的文件夹。有什么办法可以做到这一点?
【问题讨论】:
-
我认为这个问题听起来应该在 StackExchange 的 UNIX 区域结束,因为听起来您需要在 Unix 机器上适当地安装/配置时区数据库。
-
但似乎错误是 FindSystemTimeZoneById 在涉及到 unix 时正在查找错误的文件夹,时区已安装但 ofc 与 Windows 机器上的目录不同。
-
.NET Core on Unix 在
/usr/share/zoneinfo/中查找时区文件。如果您希望它在不同的目录中查找,您可以将TZDIR环境变量设置为包含您的 tzfiles 的目录。有关更多信息,请参阅Unix implementation。在 Windows 上,时区信息是从注册表中读取的,而不是从磁盘上的文件中读取的。 -
搜索引擎的额外关键字:System.TimeZoneNotFoundException:在本地计算机上找不到时区 ID '...'。 System.IO.FileNotFoundException:找不到文件'/usr/share/zoneinfo/...'
标签: c# .net nginx timezone .net-core