C# 显示值与.net DateTimePicker控件中以编程方式获取的值不匹配

C# 显示值与.net DateTimePicker控件中以编程方式获取的值不匹配,c#,.net,winforms,datetimepicker,C#,.net,Winforms,Datetimepicker,我在使用.net内置DateTimePicker控件时遇到问题-有时试图通过编程方式从控件中获取值属性,但得到的值与当前显示的值不同 例如-代码行: DateTime supposed_date = dtp_StartDate.Value; 尽管在dtp\u StartDatevalue中显示了这一点,但它表示它设置为“03.03.2013 12:03:05”我得到了假定的日期。value==“03.03.2013 11:33:07” 这个问题不一致,所以我不明白我做错了什么。嗨,米哈伊尔·特

我在使用.net内置DateTimePicker控件时遇到问题-有时试图通过编程方式从控件中获取
属性,但得到的值与当前显示的值不同

例如-代码行:

DateTime supposed_date = dtp_StartDate.Value;
尽管在
dtp\u StartDate
value中显示了这一点,但它表示它设置为
“03.03.2013 12:03:05”
我得到了
假定的日期。value==“03.03.2013 11:33:07”


这个问题不一致,所以我不明白我做错了什么。

嗨,米哈伊尔·特雷古波夫,试试这个

private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            DateTime SomeDate = dateTimePicker1.Value.ToLocalTime().ToUniversalTime();
        }
它将设置为精确的值

private void button1_Click(object sender, EventArgs e)
        {
            DateTime Suposed_Date = dateTimePicker1.Value.ToLocalTime().ToUniversalTime();
        }

这是为点击按钮而写的,我终于找到了问题的根源:
在父窗体的一个方法中,包含DateTimePicker控件的父控件,我有一个代码部分,用于更改DateTimePicker的日期时间输入的自定义格式掩码。虽然在更改格式后没有出现异常,并且在更改输入值的自定义格式掩码后也没有任何代码执行问题的迹象-DateTimePicker的任何用户编辑都不会影响控件的实际值属性-只是显示值

闻起来像是
文化
之类的东西?如果你是说指定CultureInfo,我真的不明白它会如何影响显示值。似乎显示值和实际存储值是不同的属性,尽管它们不是。我有一个想法,DateTimePicker的值在我将其保存到新的DateTime对象中时可能会损坏,但我仍然不确定为什么以及如何修复它。使用DateTimePicker关闭一小时表示夏令时存在问题。或者把UTC和当地时间混在一起,住在欧洲大陆。DateTimePicker在处理代码中的日期时,最好找出一个bug。在我的问题中,我给出了一个糟糕的例子-它不是时间值的1小时转换,可能是几分钟,或者任何其他时间值-它看起来更像控件初始化时的DateTime值,当我更改控件中显示的值时,该值不会更改。不幸的是,我需要通过按下按钮来获取该值,-我目前没有ValueChanged的监视程序。每次DateTimePicker值更改时可能会恢复其副本可能会解决问题(至少我可以确定该值确实会更改),但这似乎不是一个好的解决方案那么我的编辑应该可以解决您的问题,只需将我的datetimepicker1更改为您的dtp_StartDate,正如我在对另一个答案的评论中所述-我不认为这是值属性的格式问题-更像是当我在控件中设置时间和日期时,它无法正常工作,并且控件的值属性没有更改OK,抱歉,mikhail,只是我试着用控件(datetimepicker)设置一个值,这个值也和你的一样,我得到它是为了得到正确的时间,我会尝试你的解决方案,但是正如我提到的-问题是不一致的-我在调试时无法捕捉到它-它意外地出现在一个构建的应用程序中