日期类型问题

时间:2010-09-17 09:14:08

标签: c# winforms

我收到此日期:9/20/2010 3:32:32 PM

我需要转换为datetime。

我试试:

DateTime DateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "dd/M/yyyy", CultureInfo.InvariantCulture);

但我收到错误:String was not recognized as a valid DateTime.

在我的电脑中,该地区为:Hebrew (Israel) dd/MM/yyyy for short date and hh:mm for short time

如何解决?

提前谢谢

5 个答案:

答案 0 :(得分:11)

如果您收到“9/20/2010 3:32:32 PM”作为字符串,那么尝试解析它就好像它是“dd / MM / yyyy”格式一样显然是错误的 - 那就试试使用 20.您也只是解析部分字符串 - 您需要修剪字符串或提供完整的格式。

试试这个:

DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM",
                                        "M/dd/yyyy h:mm:ss tt", 
                                        CultureInfo.InvariantCulture);

请注意,只有在您可以保证将始终作为格式时,才能使用此类严格解析。你从哪里得到这些数据?

答案 1 :(得分:4)

怎么可能有效。你正在转变成“dd / MM / yyyy”&把月份当作20个。在你的 问题dd / M / yyyy是错的。它会喜欢dd / MM / yyyy。

默认格式为MM/DD/yyyy.

简单的方法.......

DateTime DateFrom = DateTime.Parse("9/20/2010 3:32:32 PM");

如果您想提供特定格式,请使用

DateTime DateFrom = DateTime.ParseExact("20/09/2010 3:32:32 PM", "dd/MM/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

我希望它有效。

答案 2 :(得分:0)

看起来您的原始日期字符串采用美国格式(即m / dd / yyyy)。尝试用new CultureInfo("en-US")

替换第三个参数

答案 3 :(得分:0)

DateTime dateFrom = DateTime.ParseExact("9/20/2010 3:32:32 PM", "M/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

为我工作

答案 4 :(得分:0)

当我知道时间字符串由不变文化格式化时,我不会使用ParseExact()。

DateTime dateFrom = DateTime.Parse(dateString, CultureInfo.InvariantCulture);

更紧凑,更清晰。