如何从Windows窗体DateTimePicker控件中仅获取日期值?

83

我正在用C#编写一个应用程序。
如何从DateTimePicker控件中仅获取日期值?

10个回答

143

我假设您是指在WinForms应用程序中使用日期时间选择器。

在您的代码中,您可以执行以下操作:

string theDate = dateTimePicker1.Value.ToShortDateString();

或者,如果您希望指定日期的格式:

string theDate = dateTimePicker1.Value.ToString("yyyy-MM-dd");

5
我使用了yyyy-mm-dd而不是yyyy-MM-dd,每次尝试获取日期时都会得到一个随机的月份,让我感到很困惑 :D。 - schar

52
DateTime dt = this.dateTimePicker1.Value.Date;

1
是的,但它选择的是午夜12点而不是当前时间,因此完成了任务。 - Igor

9

在将日期数据插入数据库时,我遇到了这个问题,您可以简单地分别使用结构成员:

在我的情况下,这很有用,因为sql语句需要正确的值,您只需要添加斜杠或破折号以完成格式,无需进行转换。

DateTimePicker dtp = new DateTimePicker();
String sql = "insert into table values(" + dtp.Value.Date.Year + "/" + 
dtp.Value.Date.Month + "/" + dtp.Value.Date.Day + ");";

那样你就只能得到日期成员,没有时间...

5
string shortDate = dateTimePicker1.Value.ToShortDateString();

3

在WinForms中,除了Vivek所说的设置DateTimePicker 格式属性外,我们还可以设置自定义格式,这样可以在DateTimePicker内以指定的格式字符串显示日期/时间,然后,就像从TextBox获取文本一样简单。

// Set the Format type and the CustomFormat string.
dateTimePicker1.Format = DateTimePickerFormat.Custom;    
dateTimePicker1.CustomFormat = "yyyy/MM/dd";

dateTimePicker1

我们现在可以通过从 DateTimePicker 获取文本来轻松获取日期:
MessageBox.Show("Selected Date: " + dateTimePicker1.Text, "DateTimePicker", MessageBoxButtons.OK, MessageBoxIcon.Information);

enter image description here

注意:如果您计划将仅包含日期数据插入到 SQL 中的 日期 列类型中,请参阅与支持的日期字符串文字格式相关的 文档。您无法插入格式为 ydm 的日期字符串,因为该格式不受支持:

dateTimePicker1.CustomFormat = "yyyy/dd/MM";  
var qr = "INSERT INTO tbl VALUES (@dtp)";
using (var insertCommand = new SqlCommand..
{
   try
   {
     insertCommand.Parameters.AddWithValue("@dtp", dateTimePicker1.Text);
     con.Open();
     insertCommand.ExecuteScalar();
   }
   catch (Exception ex)
   {
      MessageBox.Show("Exception message: " + ex.Message, "DateTimePicker", MessageBoxButtons.OK, MessageBoxIcon.Error);
   }

上述代码会导致以下异常: 在此输入图片描述 请注意。干杯。

请记住,自定义格式是区分大小写的。应该是yyyy/dd/MM,而不是yyyy/dd/mm - Gray Programmerz
我得到了“对象引用未设置为对象实例”的错误。 - Moeez

1
你是指如何获取不带时间的日期吗?使用DateTimePicker.Value.Date。但你需要根据自己的需求格式化输出。

0

试试这个

var store = dtpDateTimePicker.Value.Date;

store 可以是任何实体对象等。


0

很简单,喜欢它

string fecha = dtFecha.Value.ToString("yyyy/MM/dd");

0

@Shoban 看起来这个问题被标记为c#,所以这里是适当的代码片段http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.value.aspx

public MyClass()
{
    // Create a new DateTimePicker
    DateTimePicker dateTimePicker1 = new DateTimePicker();
    Controls.Add(dateTimePicker1);
    MessageBox.Show(dateTimePicker1.Value.ToString());

    dateTimePicker1.Value = DateTime.Now.AddDays(1);
    MessageBox.Show(dateTimePicker1.Value.ToString());
 } 

-1
Datum = DateTime.Parse(DateTimePicker1.Value.ToString("dd/MM/yyyy"))

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