【问题标题】:different date formats in different windows azure deployment environment不同windows azure部署环境中的不同日期格式
【发布时间】: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


【解决方案1】:

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

您的 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);

【讨论】:

  • 我可以使用 Windows Azure 中的一些配置文件在 UI 中执行您正在执行的操作吗?
  • @SujithKp 我从不使用 Windows Azure,但 Azure 中是否有任何配置选项?看看asp.net版本support.microsoft.com/kb/306162/en-us
【解决方案2】:

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

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

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

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

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

【讨论】:

  • 在我的上下文中这种方法的问题是 DateTime.Now.ToString("dd/mm/yyyy") 被大量使用。因此,当它已经在 E 环境(这是我们的目标环境)中工作时,我不想到处更改。
最近更新 更多