【问题标题】:How to get only the date value from a Windows Forms DateTimePicker control?如何仅从 Windows 窗体 DateTimePicker 控件中获取日期值?
【发布时间】:2010-11-11 09:53:22
【问题描述】:

我正在使用 C# 代码构建应用程序。
如何仅从 DateTimePicker 控件中获取日期值?

【问题讨论】:

    标签: c# winforms date datetimepicker


    【解决方案1】:
    DateTime dt = this.dateTimePicker1.Value.Date;
    

    【讨论】:

    • 是的,但它会选择 12:00 AM 而不是当前时间,因此可以完成这项工作。
    【解决方案2】:

    我假设您的意思是 winforms 应用程序中的日期时间选择器。

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

    string theDate = dateTimePicker1.Value.ToShortDateString();
    

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

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

    【讨论】:

    • 所以我使用 yyyy-mm-dd 而不是 yyyy-MM-dd 并且一直在苦苦挣扎,为什么我每次尝试获取日期时都会得到一个随机月份:D
    【解决方案3】:
    string shortDate = dateTimePicker1.Value.ToShortDateString();
    

    【讨论】:

      【解决方案4】:

      您的意思是如何在没有时间组件的情况下获取日期?使用DateTimePicker.Value.Date 但是您需要根据需要格式化输出。

      【讨论】:

        【解决方案5】:

        @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());
         } 
        

        【讨论】:

          【解决方案6】:

          我在将日期数据插入数据库时​​遇到了这个问题,您可以简单地单独使用结构成员: 就我而言,它很有用,因为 sql 语句需要具有正确的值,您只需添加斜杠或破折号即可完成格式,无需转换。

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

          这样你就可以得到没有时间的日期成员......

          【讨论】:

            【解决方案7】:

            在这个问题已经给出了很好的答案之后,在 WinForms 中我们还可以像 Vivek 所说的那样为 DateTimePicker Format 属性设置一个Custom Format,这样我们就可以显示日期/time 在 DateTimePicker 中指定格式字符串,然后,就像我们从 TextBox 中获取文本一样简单。

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

            我们现在只能通过从 DateTimePicker 中获取文本来轻松获取日期:

            MessageBox.Show("Selected Date: " + dateTimePicker1.Text, "DateTimePicker", MessageBoxButtons.OK, MessageBoxIcon.Information);
            

            注意:如果您计划将仅日期数据插入 SQL 中的 date 列类型,请参阅此documentationdate 支持的字符串文字格式相关.您不能在格式字符串 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
            • 我收到Object reference not set to an instance of an object.'
            【解决方案8】:

            试试这个

            var store = dtpDateTimePicker.Value.Date;
            

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

            【讨论】:

              【解决方案9】:
              Datum = DateTime.Parse(DateTimePicker1.Value.ToString("dd/MM/yyyy"))
              

              【讨论】:

                猜你喜欢
                • 2017-05-05
                • 2020-08-12
                • 2011-02-13
                • 2015-02-22
                • 1970-01-01
                • 2017-10-18
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多