在C#中转换日期时间时遇到问题

时间:2013-09-26 09:03:18

标签: c# .net

我正在尝试按照数据输入格式("dd/MM/YYYY""MM/dd/YYYY")转换用户输入的日期。

我正在使用System.Globalization.DateTimeFormatInfo进行转换,以便日期转换应独立于我的电脑日历:

System.Globalization.DateTimeFormatInfo dateInfodd = new System.Globalization.DateTimeFormatInfo();
dateInfodd.ShortDatePattern = "dd/MM/yyyy";
System.Globalization.DateTimeFormatInfo dateInfomm = new System.Globalization.DateTimeFormatInfo();
dateInfomm.ShortDatePattern = "MM/dd/yyyy";

我的电子日历格式为:MM-dd-YYYY

现在每当我将日期从dd/MM/YYYY转换为MM/dd/YYYY或反之时,其转换为MM-dd-YYYY

示例:24/08/2013 => 08-24-2013

我想在转换后维持相同的日期分隔符“/”。

等待您宝贵的建议。

3 个答案:

答案 0 :(得分:0)

/将替换为您的实际文化的日期分隔符,似乎是-。所以你需要提供CultureInfo.InvariantCulture

string result = dateTime.ToString("MM/dd/YYYY", CultureInfo.InvariantCulture);

请参阅:The "/" Custom Format Specifier

  

“/”自定义格式说明符表示日期分隔符   用于区分年,月和日。适当的   从中检索本地化日期分隔符   当前或指定的DateTimeFormatInfo.DateSeparator属性   培养

答案 1 :(得分:0)

在日期格式字符串中,/字符不是文字,而是为当前文化配置的date separator。因此,如果您当前的日期分隔符为-,则所有/字符都将替换为-

您可以使用单引号括起该字符,以强制将其解释为文字,例如:

"dd'/'MM'/'YYYY"

答案 2 :(得分:0)

我想知道您为什么不使用parseExact的{​​{1}}方法?它会将您的值转换为预期的格式,您仍然可以将其用作DateTime。阅读更多here