时区查找在基础docker aspnet映像中工作,但在aspnet:6.0-alpine3.15中不起作用



我有一些代码,通过ID查找时区,像这样

string tz = "Pacific Standard Time";
var timezone = TimeZoneInfo.FindSystemTimeZoneById(tz);

在我的Dockerfile中如果我将图像声明为

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS release

代码可以工作,但是如果我尝试切换到Alpine(即使我添加了tzdata),它会失败并出现异常

FROM mcr.microsoft.com/dotnet/aspnet:6.0-alpine3.15 AS release
RUN apk add --no-cache tzdata

异常:

System.TimeZoneNotFoundException: The time zone ID 'Pacific Standard Time' was not found on the local computer.
---> System.IO.FileNotFoundException: Could not find file '/usr/share/zoneinfo/Pacific Standard Time'.

我丢了一个包裹或什么东西,但我不确定。我需要在Alpine中添加什么才能使它正确地选择Windows风格的时区?

ICU库包含从Windows时区到IANA时区的映射。另外,确保不变全球化是关闭的:

ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT false
RUN apk add --no-cache icu-libs tzdata

来源:https://devblogs.microsoft.com/dotnet/date-time-and-time-zone-enhancements-in-net-6/time-zone-conversion-apis

相关内容