DateTime.ParseExact 返回错误值
Posted
技术标签:
【中文标题】DateTime.ParseExact 返回错误值【英文标题】:DateTime.ParseExact Returns Wrong Value [closed] 【发布时间】:2017-04-16 11:28:43 【问题描述】:我正在尝试将小时和分钟添加到 datepicker(wpf) 的返回值中。我认为 ParseExact() 的日期格式参数有问题,但无法找到问题所在。
string[] timeAndDate = System.Text.RegularExpressions.Regex.Split(dPicker.SelectedDate.ToString(), " ");
string time = cmbTime.SelectedItem.ToString();
string tempDT = timeAndDate[0] + " " + time;
DateTime queryDT = DateTime.ParseExact(tempDT, "dd.MM.yyyy HH:mm", CultureInfo.InvariantCulture);
它不断返回 minValue 01.01.0001 等。它可能与这些时间点有关。我也尝试添加秒,但仍然没有运气。
顺便说一句 tempDT 有点“22.12.2016 20:30”
我的输入字符串是“22.12.2016 20:30” 方法返回 01.01.0001 00:00:00
我也这样做是为了从日期选择器中获取两个日期并通过两个组合框获取两个小时变量,并制作两个日期时间对象以将它们发送到 sql。
似乎我没有把调试点放在正确的位置,尴尬但无论如何,非常感谢!
【问题讨论】:
请显示您的输入字符串。s “有点”是什么意思?tempDT
到底是什么?
DateTime.ParseExact("22.12.2016 20:30", "dd.MM.yyyy HH:mm", CultureInfo.InvariantCulture);
为我返回 12/22/2016 8:30:00 PM
。您传入的 实际 值是多少?实际确定的确认没有傻瓜的价值,而不是猜测或推论。附言@rboe 是对的,整件事都是自欺欺人的毫无意义的练习。
或者......换句话说......调试你的代码。
无需将dPicker.SelectedDate的DateTime转为字符串,通过字符串操作进行操作。直接使用 DateTime 类型有什么意义。我不确切地知道你想要实现什么,所以请澄清你的帖子。
【参考方案1】:
看起来您根本不需要解析日期;日期选择器已将所选日期公开为 System.DateTime。您仍然需要解析时间,因为出于某种原因它被保存在组合框中而不是 TimePicker 中。
代替
string[] timeAndDate = System.Text.RegularExpressions.Regex.Split(dPicker.SelectedDate.ToString(), " ");
string time = cmbTime.SelectedItem.ToString();
string tempDT = timeAndDate[0] + " " + time;
DateTime queryDT = DateTime.ParseExact(tempDT, "dd.MM.yyyy HH:mm", CultureInfo.InvariantCulture);
为什么不写
var ts = TimeSpan.Parse(cmbTime.SelectedItem.ToString());
DateTime queryDT = dPicker.SelectedDate.Add(ts);
【讨论】:
我尝试了 AddHours() 但不想让双重类型参与其中。我可以用你的方法,非常感谢! 顺便说一句,据我所知,wpf 没有香草 TimePicker,我错了吗? @SelcukSZR 它没有香草,但如果你不反对使用它,扩展的 WPF 工具包有一个 DateTimePicker 控件 - wpftoolkit.codeplex.com/…以上是关于DateTime.ParseExact 返回错误值的主要内容,如果未能解决你的问题,请参考以下文章
泰国/佛教时代时间的 DateTime.ParseExact 问题
c# datetime.parseexact 字符串未被识别为有效的日期时间 [重复]
csharp 用法DateTime.Parse DateTime.ParseExact。今更だけど,稀に迷う时があるのでメモ。