如何从 dateTimePicker 中仅获取日期并存入变量?

4

我正在使用C#和WinForms尝试将dateTimePicker中的日期放入一个变量中。但是我一直得到日期和时间。在下面的示例中,textBox1显示了我正在寻找的内容。但是我无法弄清楚如何为textBox2做同样的事情。其中它给出了日期和时间。这不是我在应用程序中使用的确切代码,而是用作示例的简化版本。我该如何修改它以满足我的需求?谢谢。

    private void dateTimePicker1_CloseUp(object sender, EventArgs e)
    {
        DateTime varDate;

        textBox1.Text = dateTimePicker1.Value.ToShortDateString();

        varDate = dateTimePicker1.Value;
        textBox2.Text = Convert.ToString(varDate);
    }

1
为什么你不能使用与Textbox1相同的代码来处理Textbox2呢? - Martin Harris
我认为这是一个测试,帮助他们理解正在发生的事情。我认为JimDel缺少一个基本观点,用于存储值的类是DateTime,因此始终会有时间组件,但默认情况下将设置为00:00:00.0,并且可以使用Date方法丢弃它。 - Lazarus
这正是我在Lazarus中所做的。感谢您提供有关将时间设置为00:00:00.0的信息! - JimDel
5个回答

10
varDate = dateTimePicker1.Value.Date;

这将返回 DateTimePicker 的值,并将时间设置为 00:00:00。


这将仍然在textBox2中给他时间,因为他使用了Convert.ToString()。 - Sani Huttunen
谢谢Thomas,我尝试了你说的方法,但没有意识到时间被重置为0。对于我的目的来说,这很好,可以满足我的需求。谢谢。 - JimDel

4

试试这个

textBox2.Text = varDate.ToShortDateString();

或者
varDate = DateTimePicker1.Value.Date;
textBox2.Text = varDate.ToShortDateString() // varDate.ToString("MM/dd/yy") this would also work

+1 DateTime 类型中没有日期和时间的分隔,也不需要。只需要按照你想要/需要的方式进行输出即可。 - Steven Evers

1

像这样:

private void dateTimePicker1_CloseUp(object sender, EventArgs e)
{
    DateTime varDate;

    textBox1.Text = dateTimePicker1.Value.ToShortDateString();

    varDate = dateTimePicker1.Value;
    textBox2.Text = varDate.ToShortDateString();
}

1

感谢Lazarus上面的评论,我现在认为我理解了你的问题...

DateTime变量无法仅保留日期值,最好的方法是将时间部分设置为00:00:00。不幸的是,当您调用默认的ToString()方法时,它仍会被打印出来。因此,解决您的问题的方法完全取决于您试图解决的实际问题:

如果您想在TextBox中仅显示日期部分,则可以使用ToShortDateString()方法或任何其他date formatting string,但我猜您已经知道这一点,因为您正在使用TextBox1的该方法。

如果您要比较两个日期时间并且不希望时间部分有关,则可以使用Date属性确保将时间部分设置为午夜。

datetimeA.Date == dateTimeB.Date

请注意,这并不避免时间部分的比较(被比较的对象仍然是日期时间),但确保它们相等。
我能想到的唯一另一个原因是您觉得该对象过于复杂并包含多余信息。虽然我非常怀疑这是否是问题,但您可能会安慰地知道,DateTime对象的内部几乎只是一个单独的长整型值,并且您不会浪费未使用的时间部分的空间。

嗨,马丁,我正在尝试比较日期,就像你说的那样。确保我可以将两个时间都归零将帮助我实现我的目标。所以谢谢你的回答! - JimDel

1
试试这个:

textBox1.Text = dateTimePicker1.Value.ToString("yyyy-MM-dd");


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接