DateTime.ParseExact字符串未被识别为有效日期时间

时间:2015-01-28 14:39:28

标签: c# asp.net datetime

在花了很长时间尝试在SO和谷歌中找到的各种建议后,我转向了SO社区。

我有一个Asp.Net项目,它将数据库中的数据读入poco类。我无法将表示DateTime的字符串值转换为c#中的适当值。这是我的代码:

string value = get_value_from_repository(fieldname, repository); 
// value = "21/1/2015 12:00:00 πμ" which means 21-jan-2015 12:00:00 am (greek)

DateTime.ParseExact(value, "dd/M/yyyy h:mm:ss tt",CultureInfo.InvariantCulture, DateTimeStyles.None);

无论我尝试使用何种格式(“dd / M / yyyy h:mm:ss tt”,“d / M / yyyy hh:mm:ss tt”,“dd / M / yyyy HH:mm: ss tt“)我仍然得到这个错误。任何关于正确方向的建议都将受到高度赞赏。 谢谢。

2 个答案:

答案 0 :(得分:2)

你传递的是Invariant文化,它无法识别希腊字符“am” - 这是我的猜测。请尝试使用希腊CultureInfo对象(如果设置正确,可能是CurrentCulture)。

答案 1 :(得分:0)

您可以使用希腊语DateTimeFormat

var greek = new CultureInfo("el-GR").DateTimeFormat;
DateTime dt = DateTime.ParseExact(date, "dd/M/yyyy h:mm:ss tt", greek, DateTimeStyles.None);

这符合预期,并将于2015年1月21日返回。如果希腊语DateSeparator不是/,您还需要使用'/'代替/ are replaced with the localized date separator