.Net 中的自定义日期时间文化本地化

问题描述 投票:0回答:1

我正在开发一个 .Net Web api 项目 v6.0,现在我遇到了一个严重的问题。 当我有 DateTime 或 DateOnly 变量时,.Net 会花费 -3 或更多小时,并弄乱该变量的所有日期。

例如:当我发送包含日期时间数据的“今天 X 员工出勤”请求时,如果请求是

"12/04/2023 15:30"
"12/04/2023 03:30 PM"
,当这个请求到达后端时,它会将其视为
"12/03/2023 11:30"
"12/03/2023 11:30 PM"
。 所以这个小事给我想要实现的这类服务带来了很大的麻烦......

我尝试过这样的事情:

    public static void ConfigureLocalization(this IServiceCollection services)
    {
        services.Configure<RequestLocalizationOptions>(options =>
        {
            options.DefaultRequestCulture = new RequestCulture("de");
            options.SupportedCultures = new List<CultureInfo> { new CultureInfo("de") }; 
            options.RequestCultureProviders.Clear();
        });
    }

但问题是我想根据用户的时区进行设置,而不是将其设置为静态时区,因为我可能有来自俄罗斯的员工,例如,俄罗斯有 11 个时区!。那将是一团糟。

您有解决此类问题的经验吗?或者您能想到任何可以帮助我解决此问题的解决方案吗?谢谢你。

.net-core asp.net-web-api localization cultureinfo
1个回答
0
投票

后端的所有日期操作都应以 UTC 格式执行,无论是在应用程序逻辑还是数据库中。对于前端,根据用户的浏览器时区显示时间。如果使用自定义时区,请在登录应用程序时将偏移详细信息加载到本地存储中。利用此偏移值可以准确地呈现正确时区中的日期时间值。

© www.soinside.com 2019 - 2024. All rights reserved.