2009-08-17 18 views
3

Je souhaite placer un DateTime dans le fichier de configuration, cependant, je souhaite que le DateTime soit exprimé d'une manière spécifique. J'ai vu des exemples d'utilisation d'un DateTime dans un ConfigurationElement (comme l'exemple ci-dessous). Les exemples que j'ai vus ont tous la date exprimée en format américain. Je veux m'assurer que la date est compréhensible par tous, peu importe qui ils sont, donc je veux utiliser yyyy-MM-dd HH:mm:ss comme format.Propriété DateTime dans un ConfigurationElement

Comment faire cela lors de l'utilisation d'une classe dérivée de ConfigurationElement?

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

Répondre

3

Êtes-vous sûr? Afaik, la valeur par défaut est le style XML et c'est ce que vous voulez aussi (aaaa-mm-jj).

+0

Doh! Oui, cela fonctionne sans modification. C'est ce que j'obtiens pour essayer de lire des choses et ne pas vraiment essayer de voir par moi-même. Le Dr Feynman va tourner dans sa tombe. –

4

Je suppose que vous pouvez utiliser ce qui suit:

[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

Pour moi, il jette une exception de format sur ce ["Time"] – Uriil

0

J'ai un problème similaire en utilisant la solution ci-dessus. Pour moi, la chaîne de "this [" Time "]. ToString()" est comme "2015/6/12 15:31:24", tandis que le paramètre de format de la méthode DateTime.ParseExact est "aaaa-MM-jj HH : mm: ss ". Cette méthode ne peut donc pas analyser la chaîne avec un format donné. Vous pouvez également faire comme ci-dessous

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