首页 > 解决方案 > 即使文化在 .net core 2.1 中设置为英国,模型绑定中的日期也设置为美国格式

问题描述

.net core 2.1 中日期的模型绑定是以美国格式设置日期值,即使文化信息设置为英国格式。

任何想法 ?

这是我的启动文件代码片段

 var  enGbCulture = new CultureInfo("en-GB");
            CultureInfo.DefaultThreadCurrentCulture = enGbCulture;
            CultureInfo.DefaultThreadCurrentUICulture = enGbCulture;

            app.UseRequestLocalization(new RequestLocalizationOptions
            {
                DefaultRequestCulture = new RequestCulture(enGbCulture),

                SupportedCultures = new List<CultureInfo> { enGbCulture },

                SupportedUICultures = new List < CultureInfo > { enGbCulture },
                RequestCultureProviders = new List<IRequestCultureProvider>
                    {
                    new QueryStringRequestCultureProvider { },
                    new CookieRequestCultureProvider { },
            },
            });
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

下面是打印正确的文化信息

 <div>Current Culture: @CultureInfo.CurrentCulture.DisplayName</div>
 <div>Current UI Culture: @CultureInfo.CurrentUICulture.DisplayName</div>
 <div>Current Thread Culture: @Thread.CurrentThread.CurrentCulture.DisplayName;</div>

作为 在此处输入图像描述

示例项目在 GitHub 上

标签: .netasp.net-mvcmodelasp.net-core-mvcmodel-binding

解决方案


从任何输入字段获取日期后,只需在前端以您想要的格式显示您的日期,只需将其转换为英式格式。

试试这个代码来改变日期格式。

 string date = model.DateOfBirth.tostring(); 
    //convert datetime to string and pass it to following code
    DateTime.ParseExact(date, "M/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

推荐阅读