【发布时间】:2026-01-05 08:30:01
【问题描述】:
我在 Windows Azure 中有两个环境(部署)。 在一个环境中(比如 D env)声明
DateTime.Now.ToString("dd/mm/yyyy")
返回"08-01-2013"
在另一个环境中(比如 E env)它返回 "08/01/2013"
我不明白为什么会这样。
【问题讨论】:
标签: c# datetime azure cultureinfo regional-settings
我在 Windows Azure 中有两个环境(部署)。 在一个环境中(比如 D env)声明
DateTime.Now.ToString("dd/mm/yyyy")
返回"08-01-2013"
在另一个环境中(比如 E env)它返回 "08/01/2013"
我不明白为什么会这样。
【问题讨论】:
标签: c# datetime azure cultureinfo regional-settings
我认为您的环境附加设置不同。
您的 D 环境使用日期附加设置使用 -,您的 E 环境使用 / 在环境 E 中将日期格式更改为 dd.MM.yyyy。
对于 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);
【讨论】:
您正在使用ToString 重载,它使用当前Culture 中的设置。格式字符串中的斜杠字符被视为当前区域性日期字段分隔符的替换字符。
如果您想使用显式日期格式字符串,也请使用显式格式提供程序。在这种情况下,我建议使用InvariantCulture 中的格式;例如
using System.Globalization;
...
var x = DateTime.Now.ToString("dd/mm/yyyy", CultureInfo.InvariantCulture);
您还可以修改格式字符串以使用显式斜杠,方法是将其括在单引号中。这会阻止解析器尝试查找文化替换字符:
var x = DateTime.Now.ToString("dd'/'mm'/'yyyy");
【讨论】: