使用c#在app和windows之间的日期格式问题

时间:2009-09-28 17:28:15

标签: c#

我想将字符串转换为datatime。这是我的代码:

DateTime? dt = null;
dt = DateTime.Parse(postdate[i]);

仅适用于dd / mm / yyyy,不适用于mm / dd / yyyy,因为在我的计算机上,日期格式在控制面板中设置为dd / MM / yyyy。

因此,如果我想使用应用程序总是接受有效的格式mm / dd / yyyy,无论windows日期格式设置如何。如何在c#代码中实现它?

3 个答案:

答案 0 :(得分:5)

我认为这应该有效:

    DateTime? dt = null;
    dt = DateTime.ParseExact(postdate[i], "MM/dd/yyyy", System.Globalization.CultureInfo.CurrentCulture);

答案 1 :(得分:1)

你可以这样做:

IFormatProvider culture = new CultureInfo("en-US", true);
DateTime myDateTime = DateTime.Parse(myDateTimeValue, culture);

不是使用默认文化(基于计算机的区域设置)进行解析,而是使用美国文化进行解析,该文化使用MM / dd / YYYY

答案 2 :(得分:1)

@JDunkerley的回应是正确的,但是:

  • 2位数月份的格式说明符是MM而不是mm。

  • 如果您在使用不同分隔符的文化下运行,则使用CultureInfo.CurrentCulture将无法正确解析包含斜杠separtors的字符串(例如:culture de-DE将需要句点分隔符。

这将有效:

dt = DateTime.ParseExact(postdate[i], "MM/dd/yyyy", 
System.Globalization.CultureInfo.InvariantCulture);