6

我创建了一个 C# WinForms 应用程序。

在我的电脑上,以下工作:

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy",  null)

但这不是:

DateTime.Parse("13/05/2012")

在我客户的计算机上,它是相反的。这有效:

DateTime.Parse("13/05/2012")

但这不是:

DateTime.ParseExact("13/05/2012", "dd/mm/yyyy",  null)

错误指出:

String was not recognized as a valid DateTime.

没有设法在互联网上找到有关此问题的任何信息。该程序使用 .Net Framework 4,是一个 x86 应用程序。我运行 Windows 8 x64,客户端运行 Windows 7 x64。

有人知道为什么会发生这种情况吗?

谢谢。

4

2 回答 2

12

您在不同计算机上获得不同行为的原因是因为它们以不同的文化运行。尝试在两台计算机上运行这行代码,看看它是否输出不同的东西:(ideone)

System.Console.WriteLine(CultureInfo.CurrentCulture);

输出(示例):

zh-CN

文化指定了许多东西,其中之一是日期分隔符。如果您希望所有用户的行为一致,请尝试指定一种文化:(ideone)

CultureInfo cultureInfo = CultureInfo.InvariantCulture; // or whatever you prefer
DateTime dateTime = DateTime.ParseExact("13/05/2012", "dd/MM/yyyy", cultureInfo);

上面的代码假设你有这些 using 语句:

using System;
using System.Globalization;
于 2012-05-17T20:39:14.563 回答
11

当心; 在自定义日期和时间格式字符串中,说明mm符表示“分钟”,而不是“月”。你需要使用MM几个月。

DateTime.ParseExact("13/05/2012", "dd/MM/yyyy",  CultureInfo.InvariantCulture)
于 2012-05-17T20:41:50.893 回答