web-dev-qa-db-ja.com

CultureInfoを含むDateTime.Now.DayOfWeek.ToString()

私はコードを持っています:

DateTime.Now.DayOfWeek.ToString()

英語の曜日名を教えてくれます。ドイツ語版が欲しいのですが、ここでCultureInfoを追加してドイツ語の曜日名を取得する方法を教えてください。

63
Kovu
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
115
Diego Torres

ドイツ語CultureInfoDateTimeFormat.DayNamesプロパティを使用できます。例えば:

CultureInfo german = new CultureInfo("de-DE");
string sunday = german.DateTimeFormat.DayNames[(int)DayOfWeek.Sunday];
13
Jean-Baptiste

これはVisual Basicのソリューションです

_Dim GermanCultureInfo As Globalization.CultureInfo = New Globalization.CultureInfo("de-DE")

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday)
_

ソリューションの関数はDateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))方法により廃止されました

6
Despota

DayOfWeek は列挙なので、そのToStringメソッドはカルチャに依存しません。

DayOfWeekを使用する場合は、Enum値をドイツ語の対応する文字列に変換する関数を作成する必要があります。

string DayOfWeekGerman(DayOfWeek dow)
{

    switch(dow)
    {
      case(DayOfWeek.Sunday)
         return "German Sunday";
      case(DayOfWeek.Monday)
         return "German Monday";
      ...
    }
}

より良い方法は、ToStringからDateTimeを直接使用することです。

CultureInfo german = new CultureInfo("de-DE");
string dayName = DateTime.Now.ToString("dddd", german);
4
Oded

私はこれが好きです:

public static class DateTimeExtension
{
    public static string GetDayOfWeek(this DateTime uiDateTime, CultureInfo culture = null)
    {
        if (culture == null)
        {
            culture = Thread.CurrentThread.CurrentUICulture;
        }

        return culture.DateTimeFormat.GetDayName(uiDateTime.DayOfWeek);
    }
}

そしてあなたの質問によると:

var culture = new System.Globalization.CultureInfo("de-DE");
var day = uiDateTime.GetDayOfWeek(culture);
0
isxaker