我在C#程序中有一个字符串格式的日期:“28/09/2012”。它也可能是“09/28/2012”格式。 我需要将此字符串转换为DateTime,然后在其上调用AddMonths(2)方法。 如何在具有任何cultureie.UK / US / Asia等的计算机上确保此代码正常运行?
答案 0 :(得分:2)
DateTime.Parse应该有一个带有CultureInfo的重载。
您应该传递您选择的文化信息。安装在机器上的那个,或者是用户在您的应用程序选项或配置等中选择的那个。
拥有DateTime后,无论文化如何,AddMonths都应该有效。
很抱歉没有精确过载,我现在不在Visual Studio前面。
答案 1 :(得分:1)
AddMonths
指定错误的文化, DateTime.Parse
不会失败。因此,您必须知道DtaeTime-String的文化或格式。否则,不可能知道“10/09/2012”是在9月还是10月(正如FrantišekŽiačik指出的那样)。
假设格式为“28/09/2012”,我该如何实现此功能
如果你知道inpout字符串总是采用“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 );