2011-05-02 20 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)" : "");