我在这里回顾了这个问题:Convert string to datetime in C#.net
我试图传递的格式只是略有不同,但无法让它发挥作用。
我的代码:
var date = DateTime.ParseExact(@"28/06/2012 06:04:10 PM", @"dd/MM/yyyy hh:mm:ss tt", null);
然后我尝试了上面提到的问题中的示例代码:
var date = DateTime.ParseExact(@"14/04/2010 10:14:49.PM", @"dd/MM/yyyy hh:mm:ss.tt", null);
这也不起作用。两个都给了我
System.FormatException
String was not recognized as a valid DateTime.
任何想法都将不胜感激! 谢谢!
答案 0 :(得分:1)
问题在于本地化。
考虑以下三个陈述:
DateTime.ParseExact(@"14/04/2010 10:14:49.PM", @"dd/MM/yyyy hh:mm:ss.tt", new CultureInfo("fr-fr"))
DateTime.ParseExact(@"14/04/2010 10:14:49.PM", @"dd/MM/yyyy hh:mm:ss.tt", new CultureInfo("en"))
DateTime.ParseExact(@"14/04/2010 10:14:49.PM", @"dd/MM/yyyy hh:mm:ss.tt", CultureInfo.InvariantCulture)
第一个不起作用,而后两个会起作用。在这种情况下,这是因为PM
在fr-fr
中无效。如果你试试这个:
DateTime.ParseExact(@"14/04/2010 10:14:49.", @"dd/MM/yyyy hh:mm:ss.tt", new CultureInfo("fr-fr"))
它会正常工作。
正如评论中所指出的,其他文化可能会在其他项目上失败。 en-za
使用不同的日期分隔符,导致失败。
答案 1 :(得分:0)
var dateString = "28/06/2012 06:04:10 PM";
DateTime dt = DateTime.ParseExact(dateString, "M/d/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);
答案 2 :(得分:0)
/
是日期分隔符,可能在您的文化中,它不完全是/
。 :
可能会出现同样的问题,该问题将替换为当前的文化时间分隔符。尝试转义/
和:
:
var date = DateTime.ParseExact(@"28/06/2012 06:04:10 PM", @"dd\/MM\/yyyy hh\:mm\:ss tt", null);