2011-03-19 143 views
0
public enum WebWizDateFormat 
{ 
    DDMMYY, 
    MMDDYY, 
    YYDDMM, 
    YYMMDD 
} 

 枚舉到格式化字符串

public class WebWizForumUser 
{ 
    public WebWizDateFormat DateFormat { get; set; } 

    public WebWizForumUser() 
    { 
     this.DateFormat = WebWizDateFormat.DDMMYY; 
     HttpContext.Current.Response.Write(this.DateFormat); 
    } 
} 

這個工作,但是當我RESPONSE.WRITE它需要的格式爲 「DD/MM/YY」,我怎麼能做到這一點出來?

+0

如果我默認情況下不誤,該字符串表示的枚舉返回。我現在解釋這個問題,因爲你想使它小寫並添加斜線? – 2011-03-19 17:12:33

+0

@Steven是的,聲明枚舉類型爲dd/mm/yy不起作用 – 2011-03-19 17:13:07

+0

在這種情況下,簡單的字符串操作可能會導致錯誤,但可以考慮使用bobbymcr的回答。 – 2011-03-19 17:14:40

回答

6

簡單的答案是不要」爲此使用枚舉。靜態類怎麼樣?

public static class WebWizDateFormat 
{ 
    public const string USFormat = "MM/DD/YY"; 
    public const string UKFormat = "DD/MM/YY"; 
} 

// . . . 
string dateFormat = WebWizDateFormat.USFormat; 

(只是一個樣本,重命名爲不管是什麼讓你感覺的字段。)

+0

我真的不喜歡在這裏放棄使用枚舉,但是+1,因爲它從MMDDYY等抽象爲「本地化」格式。 – 2011-03-19 17:15:41

0

最簡單的方法是隻使用一個Dictionary<WebWizDateFormat,string>您使用相應的字符串represenations您枚舉填充,即

DateMapping[WebWizDateFormat.DDMMYY] = "dd/mm/yy"; 

那麼你可以做

HttpContext.Current.Response.Write(DateMapping[this.DateFormat]); 
0

您對本轉換規則不明確。你可以做這樣的事情:

this.DateFormat.ToLower().Insert(4, "\\").Insert(2,"\\"); 

但我懷疑,這是你的意思... ;-)
這也可能對你有所幫助:Enum ToString with user friendly strings

0

序言:我會建議不要使用枚舉項目名稱來表示數據(給定枚舉值和類型的您can get the string name)。我還建議使用隱式賦值的枚舉值作爲細微變化,例如添加或刪除枚舉項目可能會創建細微的不兼容變更/錯誤。

在這種情況下,我可能只是創建一個枚舉值映射到一個字符串格式,如:

public enum WebWizDateFormat 
{ 
    DDMMYY = 1, 
    MMDDYY = 2, 
    YYDDMM = 3, 
    YYMMDD = 4, 
    // but better, maybe, as this abstracts out the "localization" 
    // it is not mutually exclusive with the above 
    // however, .NET *already* supports various localized date formats 
    // which the mapping below could be altered to take advantage 
    ShortUS = 10, // means "mm/dd/yy", 
    LongUK = ..., 
} 

public IDictionary<string,string> WebWizDateFormatMap = new Dictionary<string,string> { 
    { WebWizDateFormat.DDMMYY, "dd/mm/yy" }, 
    // "localized" version, same as MMDDYY 
    { WebWizDateFormat.ShortUS, "mm/dd/yy" }, 
    ... // define for -all- 
}; 

// to use later 
string format = WebWizDateFormatMap[WebWizDateFormat.ShortUS]; 

快樂編碼