如何在asp.net Core中的所有文化中强制执行公历

时间:2017-11-27 17:20:48

标签: asp.net-core asp.net-core-mvc regional-settings

我们有一个asp.net核心网站,需要提供不同的文化,但由于日历不同,我们在将日期保存到数据库时遇到问题。

即使文化被改变,我们如何执行公历呢?

%let items = LONDON,NEW YORK,CHICAGO,HOUSTON;
%let pres = SUPER,SUB,GREATER,LESSER,EAST,WEST;

data many;
  do row = 1 to 100;
    item = catx('_',scan("&pres",ceil(6*ranuni(123))), scan("&items",ceil(4*ranuni(123)),','));
    output;
  end;
run;

data target;
  item = "NEW YORK"; output;
  item = "LONDON"; output;
run;

proc sql;
   create table items_like_target as
   select * from many
   where exists (select * from target where many.item contains trim(target.item))
   ;
quit;

我们想要的是让“ar”或任何其他文化使用“en”dateformat ...

谢谢

1 个答案:

答案 0 :(得分:0)

嗯,您可以随时使用CultureInfo.InvariantCulture / CultureInfo.InvariantUiCulture,或者您喜欢的文化。

IStringLocalizer<T>.WithCulture(...)方法,因此您可以创建具有该特定文化的本地化程序。

像这样(未经测试):

IStringLocalizer<SharedResource> localizer = ..;
var invariantLocalizer = localizer.WithCulture(CultureInfo.InvariantCulture);

// where "ShowDate" is "Today is {0}" in the resx
var neutralLocalizer = invariantLocalizer["ShowDate", DateTime.Now];

在MVC视图中,您可以为Views/_ViewImports.cshtml / Views/_ViewStart.cshtml中的每个视图全局定义:

@inject Microsoft.ApplicationInsights.Extensibility.TelemetryConfiguration TelemetryConfiguration
@inject IHtmlLocalizer<Startup> Localizer
@{ 
    var InvariantLocalizer = Localizer.WithCulture(CultureInfo.InvariantCulture);
}

您也可以选择设置给定文化的日历。

var current = System.Globalization.CultureInfo.CurrentCulture;
current.DateTimeFormat.Calendar = new GregorianCalendar();

Dates and calendars

所示