约会时间奇怪的行为

本文关键字:时间 约会 | 更新日期: 2023-09-27 18:34:26

我创建了一个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。

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

谢谢。

约会时间奇怪的行为

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

System.Console.WriteLine(CultureInfo.CurrentCulture);

输出(示例):

en-US

区域性指定了许多内容,其中之一是日期分隔符。如果您希望所有用户的行为一致,请尝试指定区域性:(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;

请注意;在自定义日期和时间格式字符串中,mm说明符表示"分钟",而不是"月"。您需要使用MM数月。

DateTime.ParseExact("13/05/2012", "dd/MM/yyyy",  CultureInfo.InvariantCulture)