Свойство DateTime в элементе ConfigurationElement
Я хочу поместить DateTime в файл конфигурации, однако я хочу, чтобы DateTime выражался особым образом. Я видел примеры использования DateTime в ConfigurationElement (как пример ниже). Все примеры, которые я видел, имеют дату, выраженную в американском формате. Я хочу, чтобы эта дата была понятна всем, независимо от того, кто они, поэтому я хочу использовать 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 ответа
Уверены ли вы? Afaik, по умолчанию используется стиль XML, и это то, что вы тоже хотите (гггг-мм-дд).
Я думаю, вы можете использовать следующее:
[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");
}
}
У меня есть похожая проблема, используя вышеуказанное решение. Для меня строка "this["Time"].ToString()" похожа на "2015/6/12 15:31:24", в то время как параметр формата метода DateTime.ParseExact равен "гггг-ММ-дд ЧЧ: мм: сс". Таким образом, этот метод не может проанализировать строку с заданным форматом. Кроме того, вы можете сделать, как показано ниже
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);
}