我知道这已被问过很多次了,但似乎没有一个问题与我的问题有关(所有答案都指定了另一个日期时间格式而不是给我问题的格式):
Convert string(dd/MM/yyyy hh:mm) to datetime format
Converting a String to DateTime
Convert dd/MM/yyyy hh:mm:ss.fff from String to DateTime in C#
具体示例:
输入是一个字符串:24/10/2016 10:20
我致电DateTime.TryParse(input, out output)
输出为DateTime
:{1/1/0001 12:00:00 AM}
为什么呢?这是我所知道的完全有效的输入格式......
我尝试的事情/限制:
24/10/2016 10:20:00
,它可以正常工作TryParseExact
,指定此格式,它可以正常工作但是,我不能同时使用这两种解决方案,因为输入是用户定义的,我不能强迫用户坚持特定的输入,并且想要接受任何合理格式化的日期时间。我在问题中指定的格式似乎是合理的(它是Excel输出的默认格式)。
我可以假设文化是en-US
任何帮助都将不胜感激。
更新 第一个问题的最佳答案引发了一个例外......我不知道为什么这个问题甚至被投票。
更新2:
由于有很多关闭请求,这里有一些最小的工作代码(与Mohit Shrivastava的答案重复):
string dtstr = "24/10/2016 10:20";
DateTime outdt;
DateTime.TryParse(dtstr, out outdt);
Console.WriteLine(outdt);
Console.ReadLine();
答案 0 :(得分:2)
您的输出为1/1/0001 12:00:00 AM
,这是DateeTime对象的最小值,这意味着转换失败(根据此documentation)。使用当前线程文化隐式提供的当前DateTimeFormatInfo对象中的格式信息来解析字符串输入。所以问题是你传递的日期字符串的格式。
尝试以更智能的方式使用TryParseExact方法,因为您知道字符串输入的格式,如下所示:
string dateString ="24/10/2016 10:20";
string formatString="dd/MM/yyyy HH:mm";
DateTime dateValue;
CultureInfo enUS = new CultureInfo("en-US"); // is up to you
if (DateTime.TryParseExact(dateString, formatString , enUS,
DateTimeStyles.None, out dateValue))
答案 1 :(得分:0)