【问题标题】:The time zone ID 'Pacific Standard Time' was not found on the local computer在本地计算机上找不到时区 ID“太平洋标准时间”
【发布时间】:2022-10-13 07:41:08
【问题描述】:

我已经在 AWS Lambda 上部署了我的应用程序,但是在获取时区时我收到了这个错误

'The time zone ID 'Pacific Standard Time' was not found on the local computer.'

如何在 lambda 上添加时区。

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById(userModel.TimeZoneListCode);

【问题讨论】:

  • 您使用的是哪个版本的 .NET? “太平洋标准时间”是 Windows 时区数据库 ID;相应的 IANA 将是 America/Los_Angeles。我通常会鼓励您在任何地方使用 IANA ID,但在 .NET 6 中,您应该能够在每个平台上使用任一样式。
  • @JonSkeet TimeZoneInfo.FindSystemTimeZoneById(string) 方法自动接受任一平台上的 Windows 或 IANA 时区,并在需要时进行转换。
  • 是的,它确实在 .NET 6 中.它不在旧版本中,这就是为什么我要问您使用的是什么版本的 .NET。例如,如果您使用的是 .NET Core 3.1,则可以解释问题。
  • 此外,.NET 6 中的转换仅在 ICU 数据可用(预安装或应用程序本地 ICU)时才有效。我不确定 AWS Lambda 是否有 ICU,TBH。如果没有,您可以使用America/Los_Angeles,或者如果需要,您可以使用timezoneconverter 进行转换。

标签: c# .net amazon-web-services aws-lambda timezone


【解决方案1】:

一般来说,如果这样的 Windows 时区不起作用:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");

...那么你没有在 Windows 上运行要么您没有使用 .NET 6 或更高版本,要么您的环境中没有可用的 ICU 数据。无论哪种方式,您都应该能够使用 IANA 时区:

TimeZoneInfo tzi = TimeZoneInfo.FindSystemTimeZoneById("America/Los_Angeles");

或者,您可以使用 TimeZoneConverter 来处理任何一种形式:

TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Pacific Standard Time");

或者

TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("America/Los_Angeles");

【讨论】:

    猜你喜欢
    • 2020-12-06
    • 2017-06-26
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 2021-06-28
    • 2021-11-30
    • 1970-01-01
    • 2015-12-31
    相关资源
    最近更新 更多