2012-06-26 10 views
10

को महत्व देता है यह कोड स्थानीय है नहीं:सप्ताह का दिन के लिए स्थानीय तार हो रही

Enum.GetNames(typeof(DayOfWeek)) 

मैं एक विधि है कि स्थानीय स्ट्रिंग की एक सूची देता है, एक मनमाना सप्ताह का दिन से शुरू होने वाले चाहते हैं, कि स्थानीय है, और मैं का उपयोग करना चाहते ऐसा करने के लिए संसाधनों में निर्मित। अब तक, मैं नीचे दिए गए कोड के साथ आया हूं, लेकिन मुझे लगता है कि इसे इस तरह से समर्थित किया जाना चाहिए जो एक हैक जैसा महसूस न करे।

public List<String> GetLocalizedDayOfWeekValues(DayOfWeek startDay = DayOfWeek.Sunday) 
    { 
     var days = new List<String>(); 
     DateTime date = DateTime.Today; 

     while (date.DayOfWeek != startDay) 
      date.AddDays(1); 

     for (int i = 0; i < 7; i++) 
      days.Add(date.ToString("dddd")); 

     return days; 
    } 

ऐसा करने का एक बेहतर तरीका जानें, कृपया साझा करें। धन्यवाद!

उत्तर

26

मुझे लगता है कि आप DateTimeFormatInfo.DayNames देख रहे हैं। नमूना कोड:

using System; 
using System.Globalization; 

class Program 
{ 
    public static void Main() 
    { 
     var french = new CultureInfo("FR-fr"); 
     var info = french.DateTimeFormat; 
     foreach (var dayName in info.DayNames) 
     { 
      // dimanche, lundi etc 
      Console.WriteLine(dayName); 
     } 
    }  
} 
+1

: Lunes, मारटेस, आदि

इस कारण से, मैं इस तकनीक के उपयोग का सुझाव स्कीट स्कीट! धन्यवाद जॉन – JoeB

2

इन विधियों आप दिन नामों की सूची, सप्ताह के निर्दिष्ट संस्कृति के पहले दिन के लिए दोषी दे देंगे:

public List<String> GetLocalizedDayOfWeekValues(CultureInfo culture) 
{ 
    return GetLocalizedDayOfWeekValues(culture, culture.DateTimeFormat.FirstDayOfWeek); 
} 

public List<String> GetLocalizedDayOfWeekValues(CultureInfo culture, DayOfWeek startDay) 
{ 
    string[] dayNames = culture.DateTimeFormat.DayNames; 
    IEnumerable<string> query = dayNames 
     .Skip((int) startDay) 
     .Concat(
      dayNames.Take((int) startDay) 
     ); 

    return query.ToList(); 
} 

की तुलना करें ...

List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-fr")); 

... से ...

List<string> dayNames = GetLocalizedDayOfWeekValues(new CultureInfo("fr-ca")); 
0

मैं ' इसे अंदर फेंक देगा। मूल पोस्ट वर्तमान भाषा में दिन के नाम चाहते हैं। इस में संस्कृति सेट से आ सकती है:

System.Threading.Threads.CurrentThread.CurrentCulture

इस संस्कृति को आसानी से पुनः प्राप्त है के लिए DateTimeFormatInfo वस्तु, और आप उपयोग कर सकते हैं GetDayName:

DateTimeFormatInfo.CurrentInfo.GetDayName(dayOfWeek) 

हालांकि, यदि आप वर्तमान यूआईसील्चर/करंटकल्चर प्रतिमान का उपयोग करते हैं, तो केवल दिन का नाम प्राप्त करने के लिए, वर्तमानयूकल्चर अधिक उपयुक्त है। यह पूरी तरह से संभव है कि वर्तमान राज्य संयुक्त राज्य अमेरिका में रहने वाले किसी के लिए एन-यूएस पर सेट हो, लेकिन वर्तमान में कृषि बोलने वाले/स्पैनिश पढ़ने वाले किसी के लिए ईएस-एमएक्स या ईएस-यूएस पर सेट किया गया है। DateFormat संस्कृति सेटिंग का उपयोग करना चाहिए: dd/mm/yyyy लेकिन दिन नाम के लिए यह UIculture सेटिंग्स का उपयोग करना चाहिए:

public String getLocalDayName(DayOfWeek dayOfweek) { 
    var culture = System.Threading.Thread.CurrentThread.CurrentUICulture; 
    var format = culture.DateTimeFormat; 
    return format.GetDayName(dayOfweek); 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^