Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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# 在MVC 6应用程序中显示本地日期格式_C#_Asp.net Core_Asp.net Core Mvc - Fatal编程技术网

C# 在MVC 6应用程序中显示本地日期格式

C# 在MVC 6应用程序中显示本地日期格式,c#,asp.net-core,asp.net-core-mvc,C#,Asp.net Core,Asp.net Core Mvc,在基于ASP.NET 5 Web应用程序模板的项目中,viewmodel的此属性 [Display(Name = "Subscription Expires")] [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:D}")] public DateTime? SubscriptionExpires { get; set; } 当以@Html.DisplayFormodel=>model

在基于ASP.NET 5 Web应用程序模板的项目中,viewmodel的此属性

    [Display(Name = "Subscription Expires")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:D}")]
    public DateTime? SubscriptionExpires { get; set; }
当以@Html.DisplayFormodel=>model.SubscriptionExpires呈现时,视图中的日期格式将显示给我们,而与用户的区域设置无关


如何确保以用户格式显示日期?

要设置RC2生成时的日期区域设置,可以在Configure方法的Startup.cs文件中使用以下内容:

var ci = new CultureInfo("en-GB");
        ci.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";

        // Configure the Localization middleware
        app.UseRequestLocalization(new RequestLocalizationOptions
        {
            DefaultRequestCulture = new RequestCulture(ci),
            SupportedCultures = new List<CultureInfo>
            {                    
                new CultureInfo("en-GB"),
            },
            SupportedUICultures = new List<CultureInfo>
            {
                new CultureInfo("en-GB"),
            }
        });
全球化还没有完全消失,你可以从这篇博客文章中找到更多的信息,这些信息在RC1 final:和GitHub上的ASP.Net本地化报告中都是正确的


希望这能对您有所帮助。

您当前的区域性到底是什么?您可以在视图中看到它的格式是什么?当您说系统语言环境时,您实际上是指客户端语言环境吗?我希望服务器区域设置与此无关。值得一看是否仍然相关——可能不是,但值得一看。@Jon Skeet:100%正确。使用“D”将使用服务器的区域设置在服务器上执行代码。我的意思是用户区域设置而不是系统区域设置,并相应地编辑了我的文章。谢谢@an Auty。难道没有办法只呈现客户机日期格式而不指定我们想要支持的每个区域性吗?我们希望客户能够正确地看到他们的日期,而不管他们在世界上的什么地方。不幸的是,正如我在回答中提到的,ASP.Net 5中的全球化目前还没有完善,因此您希望实现的目标并不容易。我已经写了一篇很好的博客文章,介绍了如何设置/检索当前区域性,尽管它是针对以前的beta版本。我认为目前最好的解决方案是编写您自己的中间件,通过该中间件,您可以从URL获取文化语言类型,并在此基础上设置日期格式。尽管有几种方法可以“猜测”用户从何处浏览您的网站,我不相信它们中的任何一个可以被依赖,除非你使用HTML5地理定位,这必须得到用户的允许。您的选择是在url中使用国家代码,您可以基于此指定日期格式。