2012-12-06 42 views
3

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

回答

2

此代码示例将改变文化信息,以意大利语:

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

然后,让周(今天)的天权,你可以这样做:

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

下面是如何获得一个字符串的工作日:

DayOfWeek wednesday = 
    (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Wednesday"); 
+1

这不会帮助将字符串“星期六”更改为不同文化中的等效字符串。 – Chris

+0

你是对的@Chris。固定。 – Th0rndike

+0

这仍然没有考虑到起始字符串“星期六”。你真的需要一行'string dayname =“Saturday”;或类似的代码来正确使用问题所具有的输入。 – Chris

2

使用CultureInfo.CreateSpecificCulture()创建实例,然后使用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查找其他语言的日期名称。

Here is a list of other culture codes.

+1

对我来说,这个答案是完整的,你需要澄清如何从字符串“星期六”到“DayOfWeek.Saturday” – Chris

+0

编辑。错过了那部分:) –

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; 
    } 
} 
+0

他不希望今天在特定的文化中。他想要字符串“星期六”。 – Chris

+0

@克里斯,我修好了,谢谢。 –

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 
} 

Demo

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)); 

请注意,写它的情况下,在一周的某一天敏感,会抛出一个错误,如果一周中的一天没有找到,因此需要添加一些检查。

值得注意的是,这指定了源文化,所以如果你有法国名称,只需更改源文化即可使用。