3

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

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

返回 "08-01-2013"

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

我不明白为什么会这样。

4

2 回答 2

1

我认为您的环境附加设置是不同的。

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

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

在此处输入图像描述

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

不变的文化是文化不敏感的;它与英语相关,但与任何国家/地区无关。您可以在对 CultureInfo 实例化方法的调用中使用空字符串 ("") 按名称指定不变区域性。CultureInfo.InvariantCulture 还检索不变区域性的一个实例。它几乎可以用在 System.Globalization 命名空间中需要文化的任何方法中。

假设您想在CultureInfo两种环境中都使用法语。

CultureInfo frFr = new CultureInfo("fr-FR");
string s = DateTime.Now.ToString("dd/mm/yyyy", frFr);
于 2013-01-08T09:24:21.780 回答
0

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

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

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

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

var x = DateTime.Now.ToString("dd'/'mm'/'yyyy");
于 2013-01-08T09:48:20.007 回答