【发布时间】:2017-03-06 21:50:41
【问题描述】:
我知道这已经被问过很多次了,但似乎都与我的问题无关(所有答案都指定了另一种日期时间格式,而不是给我带来问题的格式):
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();
【问题讨论】:
-
能否请您也显示您正在运行的代码。
-
允许用户定义格式是自找麻烦。这就是为什么最好为日、月和年设置单独的输入字段或下拉菜单,或者限制格式。
-
@Dijkgraaf 这是从 CSV 文件中解析出来的。我正在尝试适应所有格式合理的日期时间,如果这很疯狂,那么我会很高兴地放弃记录。
-
我不认为你会有一个完美的解决方案,例如当用户输入
10/11/2016 23:11:59。我相信您可以完美地检索时间部分,但我们永远不知道用户想要日期11 Oct或10 Nov -
Alex 是对的,如果没有指定文化,您无法判断输入是月/日/年还是日/月/年。但是 - 你说你可以假设
en-US,你也举了一个24/10/2016的例子,这在那个文化中是无效的,因为美国使用月/日/年,@987654339 @ 不是有效月份。所以你的要求是不清楚和矛盾的。
标签: c# .net date parsing datetime