Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Docker从开发到生产的不同转换日期_C#_Docker_.net Core - Fatal编程技术网

C# 使用Docker从开发到生产的不同转换日期

C# 使用Docker从开发到生产的不同转换日期,c#,docker,.net-core,C#,Docker,.net Core,我正在我的.netcore3.1c#WebAPI应用程序的生产环境中使用Docker 我在Startup.cs中配置: var cultureInfo = new CultureInfo("it-IT"); CultureInfo.DefaultThreadCurrentCulture = cultureInfo; CultureInfo.DefaultThreadCurrentUICulture = cultureInfo; var supportedCultures = new[] {

我正在我的
.netcore3.1c#WebAPI
应用程序的生产环境中使用Docker

我在
Startup.cs
中配置:

var cultureInfo = new CultureInfo("it-IT");

CultureInfo.DefaultThreadCurrentCulture = cultureInfo;
CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;

var supportedCultures = new[] { cultureInfo };

app.UseRequestLocalization(new RequestLocalizationOptions
{
      DefaultRequestCulture = new RequestCulture("it-IT"),
      // Formatting numbers, dates, etc.
      SupportedCultures = supportedCultures,
      // UI strings that we have localized.
      SupportedUICultures = supportedCultures
});
在我的本地计算机中使用
“it”
区域性调用API并转换日期:

Convert.ToDateTime("1976-10-30T23:00:00.000Z")
返回我期望的日期时间:
“{31/10/1976 01:00:00}”

当我在生产中部署时,日期在
中转换为“{30/10/1976 23:00:00}”

我认为Docker容器具有与本地机器不同的区域性,或者根本没有安装区域性

我的Docker文件如下所示:

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/core/sdk:3.1.101-buster AS build
WORKDIR /src
...
同时在本地计算机中运行此代码:

CultureInfo ci = CultureInfo.InstalledUICulture;
Log.Warning("Installed Language Info:{0}", ci.Name);
ci = CultureInfo.CurrentUICulture;
Log.Warning("Current UI Language Info: {0}", ci.Name);
ci = CultureInfo.CurrentCulture;
Log.Warning("Current Language Info: {0}", ci.Name);
我得到:

[10:06:17 WRN] Installed Language Info:it-IT
[10:06:17 WRN] Current UI Language Info: it-IT
[10:06:17 WRN] Current Language Info: it-IT
在Docker:

[10:12:08 WRN] Installed Language Info:
[10:12:08 WRN] Current UI Language Info: it-IT
[10:12:08 WRN] Current Language Info: it-IT

有人能给我一个提示吗?

这可能与基础图像上缺少文化有关。这是阿尔卑斯山图片中描述的类似问题-


当时区丢失时,它将转到不变/UTC。

这可能与基本图像上缺少区域性有关。这是阿尔卑斯山图片中描述的类似问题-


当时区丢失时,它将转到/UTC。

据我所知,这不是文化问题,因为格式等不是问题。你的问题似乎是时区问题。每台机器都有一个本地时区,该时区由主机操作系统设置,您无法更改。您在生产环境中运行的docker服务器具有不同的时区。您必须将应用程序更改为使用DateTime.ToUniversalTime(如果可能),以使您的应用程序独立于时区。您找到了解决方案吗?据我所知,这不是区域性问题,因为格式等不是问题。你的问题似乎是时区问题。每台机器都有一个本地时区,该时区由主机操作系统设置,您无法更改。您在生产环境中运行的docker服务器具有不同的时区。您必须将应用程序更改为使用DateTime.ToUniversalTime(如果可能),以使您的应用程序独立于时区。您找到解决方案了吗?