2011-05-02 32 views
4
using System; 

namespace Server.Custom.Extensions 
{ 
    public static class FriendlyExtensions 
    { 
     public static string Friendly(this DayOfWeek day) 
     { 
      if (day == DateTime.Now.DayOfWeek) 
       return "Hoy"; 

      int dayOfWeek = (int)DateTime.Now.DayOfWeek; 
      int dayOfEvent = (int)day; 

      if (dayOfWeek + 1 == dayOfEvent || (dayOfWeek == 6 && dayOfEvent == 0)) 
       return "Mañana"; 

      switch (day) 
      { 
       default: 
       case DayOfWeek.Monday: return "Lunes"; 
       case DayOfWeek.Tuesday: return "Martes"; 
       case DayOfWeek.Wednesday: return "Miercoles"; 
       case DayOfWeek.Thursday: return "Jueves"; 
       case DayOfWeek.Friday: return "Viernes"; 
       case DayOfWeek.Saturday: return "Sabado"; 
       case DayOfWeek.Sunday: return "Domingo"; 
      } 
     } 
    } 
} 

有没有一些方法来本地化这与文化?怎么样? :( 通过我希望它说 “今天” 或 “Tomomorrow” 也一样,不只是转换的日子本地化DayOfWeek的难看方式?

+0

你能找到一个能完成工作的l10n库吗? – Ethan 2011-05-02 23:45:49

+0

我不知道这是什么 – bevacqua 2011-05-02 23:54:19

+0

你得到了很好的答案,以获得日期名称。 “今日”和“明天”没有内置翻译。 – 2011-05-03 03:39:38

回答

4

此代码从here(请参见下方)可能会使您走上正确的轨道。

CultureInfo german = new CultureInfo("de-DE"); 
DateTimeFormatInfo dtfi = german.DateTimeFormat; 

Console.WriteLine("Days of the week for the {0} culture:", 
        german.Name); 
for (int ctr = 0; ctr < dtfi.DayNames.Length; ctr++) 
    Console.WriteLine(" {0,-12}{1}", dtfi.DayNames[ctr], 
         dtfi.DayNames[ctr] == dtfi.DayNames[(int)dtfi.FirstDayOfWeek] ? 
          "(First Day of Week)" : "");