C# DateTime.TryParse对一个用户失败

C# DateTime.TryParse对一个用户失败,c#,datetime,C#,Datetime,我需要在我的程序中解析日期,但它在一个用户的机器上失败(在丹麦)。就我所知,他的同事们都有相同的设置,这对他们来说很有效 代码如下所示: DateTime result; if (DateTime.TryParse(InputBox.Text, out result)) YyyymmddField.Text = result.ToString("yyyyMMdd"); else YyyymmddField.Text = "(invalid)"; CurrentCulture是d

我需要在我的程序中解析日期,但它在一个用户的机器上失败(在丹麦)。就我所知,他的同事们都有相同的设置,这对他们来说很有效

代码如下所示:

DateTime result;
if (DateTime.TryParse(InputBox.Text, out result))
    YyyymmddField.Text = result.ToString("yyyyMMdd");
else
    YyyymmddField.Text = "(invalid)";
CurrentCulture
dadk
,他配置的格式是:
yyyy.MM.dd
。我要分析的日期字符串是
2015.07.14
。 无论当前的文化背景如何,这都适用于我们(瑞典)的机器。这也适用于他的同事,但不适用于他

我们在全球拥有数百名用户,据我们所知,他的电脑是唯一出现故障的电脑

除了当前的
CultureInfo
之外,还有什么会影响
TryParse
的工作方式吗

这在我们的机器上工作(在瑞典)无论电流如何 文化

不,没有这样的事。如果使用
DateTime.TryParse
而不使用任何
IFormatProvider
,它将使用当前计算机的
CurrentCulture
设置

来自

字符串s使用当前文件中的格式信息进行解析
DateTimeFormatInfo
对象,该对象由当前的隐式提供 线程文化

我使用的是.NETFramework4.5,在
AllCultures
中只有7个区域性没有将其作为标准日期和时间格式。如果您不愿意/不能告诉我们您的其他同事的当前文化是什么,我想他会从我的角度使用其中一种

ar
bn
ml
ar-SA
bn-IN
ml-IN
bn-BD

为了避免这种混淆,您可以使用is-your-string具有稳定的格式,如
yyyy.MM.dd
,而不是希望他的
CurrentCulture
设置将解析它或不解析它。

原则上,最好使用可重用的方法(例如扩展方法)解析日期时间和数字,它们使用不变的区域性。

使用CultureInfo.InvariantCulture

DateTime result;
    if (DateTime.TryParse(InputBox.Text, out result))
        YyyymmddField.Text = result.ToString("yyyyMMdd",CultureInfo.InvariantCulture);
    else
        YyyymmddField.Text = "(invalid)";

我建议您将数据示例更改为更清晰的月份位置,例如
2015.12.01
,但是
2015.07.01
也适用于
en-US
de
。事实上,我还没有发现一个不适用于
DateTime.TryParse(InputBox.Text,out result)
的区域性,我已经测试了所有安装的209。是的,我的意思是,如果我在控制面板中更改格式,结果都是一样的。@TimSchmelter my bad。修正了那部分。顺便说一句,我有7个无法解析的区域性。我得到的字符串实际上来自另一个程序,我假设该程序使用用户选择的区域性格式化日期。这应该意味着我可以使用相同的方法来解析它,而且它确实适用于具有相同配置文化的其他人,但不适用于他。所以我并不想知道怎么做,但除了文化之外,是否还有其他因素可以影响这一点。我的示例中显示的代码来自我为在他的机器上测试格式而编写的一个小测试程序。我想您希望
CultureInfo.InvariantCulture
作为
TryParse()
的参数,而不是
ToString()