0

現在の (または指定された) CurrentCulture オブジェクトの既定の DayNames をオーバーライドする必要があります。

私はいくつかの方法でこれを達成しようとしました:

1) Global.asax レベル:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) {
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(XXX);
    string[] newNames = { YYY };
    System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;
}

2) コントローラ レベル:

public HomeController() {
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(XXX);
    string[] newNames = { YYY };
    System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames;
}

指定された「CurrentCulture」オブジェクトは、(指定された XXX カルチャ名に従って) 正しく適用されます。式を介して、文化固有の曜日名を確認できます@DateTime.Now.ToString("ddd")。ただし、指定された「DayNames」オブジェクトは無視されているようです (ただし、「CurrentCulture」と「DayNames」の両方のプロパティがデバッガーで正しく適用されていることがわかります)。

4

1 に答える 1

0

代わりに、デフォルトの AbbreviatedDayNames をオーバーライドする必要があります。

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e) {
    System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(...);
    System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.AbbreviatedDayNames = ...;
}

@DateTime.Now.ToString("ddd")
于 2012-09-26T20:01:17.583 に答える