Question

I'm wanting to put a DateTime in to the config file, however, I want the DateTime expressed in a specific way. I've seen examples of using a DateTime in a ConfigurationElement (like the example below). The examples I've seen all have the date expressed in American format. I want to ensure that date is understandable by all regardless of who they are so I want to use yyyy-MM-dd HH:mm:ss as the format.

How do I do that when using a class derived from ConfigurationElement?

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

Solution

Are you sure? Afaik, the default is XML style and that is what you want too (yyyy-mm-dd).

OTHER TIPS

I guess you can use the following:

[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");
    }
}

I have similar problem using above solution. For me, the string of "this["Time"].ToString()" is like "2015/6/12 15:31:24", while format parameter of method DateTime.ParseExact is "yyyy-MM-dd HH:mm:ss". So this method can't parse the string with given format. Alternatively, you can do like below

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);
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top