2010-12-15 153 views
0

J'ai deux applications (site web et application de bureau) a lancé sur une machine à la fois utilise ce qui suit pour la sérialisation valeur de l'objet DateTime:.NET: paramètres DateTime sont différents sur une machine

string strDateTileFullFormat = Thread.CurrentThread.CurrentCulture 
    .GetConsoleFallbackUICulture().DateTimeFormat.FullDateTimePattern; 

string SummarySupporyUntil = string.Concat("until ", 
    TestLicenseExpiryDate.ToString(strDateTileFullFormat)); 

Une application créer : "samedi, 31 Décembre, 2011 12:00:00 AM", autre: du "31 Décembre, 2011 12:00:00 AM"

la différence est que l'on utilise champêtre "Canada", un autre - "ETATS-UNIS".

Le problème est que j'ai besoin de ces dates pour être similaires (en fait, je ne sais pas quel type est correct, peut-être le 1er).

J'ai regardé les fichiers web/app.config mais je ne vois rien en rapport avec les paramètres régionaux. En outre, je n'ai pas de changements manuels pour CurrentCulture ...

S'il vous plaît aviser. Merci!

+0

Le format de sérialisation lui-même a-t-il un format standard pour datetime (comme c'est le cas avec XML par exemple)? Si c'est le cas, ce pourrait être une bonne idée de se contenter de ce format. Si ce n'est pas le cas, pensez à utiliser une autre norme au lieu d'un format local, tel que [ISO-8601] (http://en.wikipedia.org/wiki/ISO_8601). –

Répondre

0

Une fois que vous avez décidé que la culture vous convient le mieux, vous pouvez utiliser des fonctions de mise en forme de System.DateTime comme indiqué dans le doc: DateTime.ToString Method avec une culture fixe:

Par exemple avec la culture en-US (1033):

string SummarySupporyUntil = string.Concat("until ", 
    TestLicenseExpiryDate.ToString(strDateTileFullFormat, new Culture(1033))); 

donnera le même résultat sur chaque machine qu'il sera exécuté.