2011-03-19 86 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]; 

快乐编码