不同窗口azure部署环境中的不同日期格式

时间:2013-01-08 09:05:37

标签: c# datetime azure cultureinfo regional-settings

我在Windows Azure中有两个环境(部署)。 在一个环境(比如D env)声明

DateTime.Now.ToString("dd/mm/yyyy")

返回"08-01-2013"

并在另一个环境(例如E env)中返回"08/01/2013"

我无法理解为什么会这样。

2 个答案:

答案 0 :(得分:1)

我认为您的环境其他设置不同。

您的D环境使用日期附加设置使用-,您的E环境使用/在环境E中将日期格式更改为dd.MM.yyyy

对于Windows 7,请按Control Panel-->Language and Region-->Change the date, time and number format-->Additional Settings--> Date

enter image description here

如果您想对代码部分进行一些更改,可以在代码中使用CultureInfo.InvariantCulture属性。

  

不变文化对文化不敏感;它与...有关   英语,但不包括任何国家/地区。你指定了   通过在调用中使用空字符串(“”)按名称进行不变文化   CultureInfo实例化方法。 CultureInfo.InvariantCulture也   检索不变文化的实例。它可以用于   几乎所有需要的System.Globalization命名空间中的方法   一种文化。

假设您希望两种环境都使用法语CultureInfo

CultureInfo frFr = new CultureInfo("fr-FR");
string s = DateTime.Now.ToString("dd/mm/yyyy", frFr);

答案 1 :(得分:0)

您正在使用ToString重载,该重载使用当前Culture中的设置。格式字符串中的斜杠字符被视为当前区域性日期字段分隔符的替换字符。

如果要使用显式日期格式字符串,也请使用显式格式提供程序。在这种情况下,我建议使用InvariantCulture中的格式; e.g。

using System.Globalization;
...
var x = DateTime.Now.ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);

您还可以将格式字符串修改为使用显式斜杠,方法是将其括在单引号中。这会阻止解析器尝试查找文化替换字符:

var x = DateTime.Now.ToString("dd'/'mm'/'yyyy");