0

我的 C# 程序中有一个字符串格式的日期:“28/09/2012”。它也可以是“09/28/2012”格式。我需要将此字符串转换为 DateTime,然后在其上调用 AddMonths(2) 方法。如何确保此代码在具有任何cultureie.UK/US/Asia 等的机器上正常工作?

4

2 回答 2

2

DateTime.Parse 应该有一个采用 CultureInfo 的重载。

您应该传递您选择的文化信息。安装在机器上的那个,或者可能是用户在您的应用程序选项或配置等中选择的那个。

一旦有了 DateTime,无论文化如何,AddMonths 都应该可以工作。

抱歉,对于确切的过载没有更精确,我现在不在 Visual Studio 面前。

于 2012-11-14T09:46:39.023 回答
1

AddMonths如果您为DateTime.Parse. 所以你必须知道 DtaeTime-String 是哪种文化或格式。否则不可能知道“10/09/2012”是在 9 月还是 10 月(正如 František Žiačik 指出的那样)。

假设格式是“28/09/2012”,我该如何实现这个功能

如果您知道输入字符串始终采用“dd/MM/yyyy”格式,那么您可以DateTime.ParseExact在之后使用并应用正确的区域性ToString

String input = "28/09/2012";
DateTime dt = DateTime.ParseExact(input, "dd/MM/yyyy", CultureInfo.InvariantCulture);
CultureInfo targetCulture = CultureInfo.CreateSpecificCulture("en-US");
String output = dt.AddMonths(2).ToString( targetCulture );

演示在这里

于 2012-11-14T10:03:48.827 回答