3

我有一个字符串“Saturday”,我想将其更改为其他语言文化,例如 Ploish(波兰)。如何在 C# 中进行更改。

4

5 回答 5

2

此代码示例将文化信息更改为意大利语:

CultureInfo itCI = new CultureInfo("it-IT");
Thread.CurrentThread.CurrentCulture = itCI;

然后,要获得正确的星期几(今天),您可以执行以下操作:

DayOfWeek giornoSet = DateTime.Now.DayOfWeek;
string giornoSetS =CultureInfo.CurrentCulture.DateTimeFormat.GetDayName(giornoSet);

以下是从字符串中获取 DayOfWeek 的方法:

DayOfWeek wednesday = 
  (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Wednesday");
于 2012-12-06T13:01:42.590 回答
2

用于CultureInfo.CreateSpecificCulture()创建CultureInfo您想要的实例,然后用于DateTimeFormat.GetDayName()获取您想要的特定日期的名称。

CultureInfo.CreateSpecificCulture("pl-PL").DateTimeFormat.GetDayName(DayOfWeek.Saturday)

要获取DayOfWeek原始字符串,您可以使用Enum.TryParse<DayOfWeek>("Saturday")

DayOfWeek day;

if (Enum.TryParse<DayOfWeek>("Saturday", out day))
{
    var dayInPolish = CultureInfo.CreateSpecificCulture("pl-PL").DateTimeFormat.GetDayName(day);
}

请注意,Enum.TryParse仅当输入值为英文时才有效。您可以使用CultureInfo.DateTimeFormat.DayNames其他语言查找日期名称。

这是其他文化代码的列表。

于 2012-12-06T13:02:14.283 回答
2

你可以试试这个:

DateTime.Now.ToString("dddd", System.Globalization.CultureInfo.CreateSpecificCulture("pl-PL"))

[编辑]

您可以使用此功能:

private static string TranslateDay(string dayInStringFormat, string culture)
{
    try
    {
        return CultureInfo.CreateSpecificCulture(culture).DateTimeFormat
            .GetDayName((DayOfWeek)Enum.Parse(typeof(DayOfWeek), dayInStringFormat));
    }
    catch (Exception)
    {
        return null;
    }
}
于 2012-12-06T13:08:20.773 回答
1

您可以使用DateTimeFormat.GetDayName

var culturePoland = CultureInfo.CreateSpecificCulture("pl-PL");
DayOfWeek dow;
if (Enum.TryParse<DayOfWeek>("Saturday", out dow))
{
    string day = culturePoland.DateTimeFormat.GetDayName(dow);
    Console.Write(day); // sobota
}

演示

于 2012-12-06T13:13:18.163 回答
1

以下应该有效:

var inputDay = "Saturday";
var SourceCulture = new System.Globalization.CultureInfo("en-gb");
var DestinationCulture = new System.Globalization.CultureInfo("pl-pl");
var dayInt = Array.IndexOf(SourceCulture.DateTimeFormat.DayNames, inputDay);
Console.WriteLine(DestinationCulture.DateTimeFormat.GetDayName((DayOfWeek)dayInt));

请注意,正如所写的那样,它在星期几是区分大小写的,如果找不到星期几,则会抛出错误,因此需要添加一些检查。

值得注意的是,这指定了源文化,因此如果您有法语名称,您可以通过更改源文化来使用它。

于 2012-12-06T13:15:34.710 回答