ConfigurationElement中的DateTime属性

时间:2009-08-17 21:16:30

标签: c# datetime web-config configurationelement

我想将DateTime放入配置文件中,但是,我希望以特定方式表达DateTime。我已经看到在ConfigurationElement中使用DateTime的示例(如下例所示)。我见过的例子都有以美国格式表示的日期。我想确保所有人都能理解日期,无论他们是谁,所以我想使用yyyy-MM-dd HH:mm:ss作为格式。

使用从ConfigurationElement派生的类时,如何做到这一点?

    class MyConfigElement : ConfigurationElement
    {
        [ConfigurationProperty("Time", IsRequired=true)]
        public DateTime Time
        {
            get
            {
                return (DateTime)this["Time"];
            }
            set
            {
                this["Time"] = value;
            }
        }
    }

3 个答案:

答案 0 :(得分:4)

我想你可以使用以下内容:

[ConfigurationProperty("Time", IsRequired=true)]
public DateTime Time
{
    get
    {
        return DateTime.ParseExact(
            this["Time"].ToString(),
            "yyyy-MM-dd HH:mm:ss",
            CultureInfo.InvariantCulture);
    }
    set
    {
        this["Time"] = value.ToString("yyyy-MM-dd HH:mm:ss");
    }
}

答案 1 :(得分:3)

你确定吗? Afaik,默认是XML样式,这也是你想要的(yyyy-mm-dd)。

答案 2 :(得分:0)

使用上述解决方案我有类似的问题。 对我来说,字符串“this [”Time“]。ToString()”就像“2015/6/12 15:31:24”,而方法DateTime.ParseExact的格式参数是“yyyy-MM-dd HH: MM:SS”。因此,此方法无法解析给定格式的字符串。 或者,你可以这样做

if(this["Time"] is string)
{
    return DateTime.ParseExact(
        this["Time"].ToString(),
        "yyyy-MM-dd HH:mm:ss",
        CultureInfo.InvariantCulture);
}
else
{
    DateTime time = (DateTime)this["Time"];
    return DateTime.ParseExact(
        time.ToString("yyyy-MM-dd HH:mm:ss"),
        "yyyy-MM-dd HH:mm:ss",
        CultureInfo.InvariantCulture);
}