将字符串转换为日期类型

时间:2019-02-21 11:25:49

标签: c# wpf

我想在wpf应用程序中将字符串转换为日期类型。以下是代码。

Connection con1 = new Connection();
cmbStatementDate.Items.Clear();
con1.dataGet("SELECT distinct  statement_date from stockstatement ORDER BY statement_date asc");
DataTable dt1 = new DataTable();
con1.sda.Fill(dt1);
foreach (DataRow dr1 in dt1.Rows)
{
    cmbStatementDate.Items.Add(dr1["statement_date"].ToString());
}

如何将其结果转换为日期格式(DD-MM-YYYY)并保存到cmbStatementDate(combobox)中。

谢谢。

3 个答案:

答案 0 :(得分:0)

我假设该字段是datetimedate字段。如果该字段为varchar,则应在SQL查询中将其解析为datetimedate

无需将日期转换为字符串,甚至无需一一添加。您可以使用数据绑定直接绑定到DataTable。

Windows窗体

数据绑定组合框在How to: Bind a Windows Forms ComboBox or ListBox Control to Data

中进行了描述

您还可以使用FormatString属性来指定控件应如何显示日期,例如::

//Use local short date format
cmbStatementDate.FormatString = "d";
//or hard-coded short format
//  cmbStatementDate.FormatString = "MM-dd-YYYY";
cmbStatementDate.DisplayMember = "statement_date";
cmbStatementDate.DataSource=dt;

用于指定FormatString的 best 最佳位置,DisplayMember是表单设计器本身,而不是代码隐藏文件。这使得本地化和显示格式更加容易。

数据绑定意味着每次添加新项时都无需重新绘制组合框。加载所有数据后,才会重新绘制整个组合。

还可以从设置或资源文件中提取控件属性。这样一来,只需创建新的设置或资源文件,某人就可以对应用程序进行本地化。

通常,本地化,全球化和数据绑定自2002年以来就已植入.NET。您可以可以创建一个应用程序,并轻松地将其本地化为不同的标记,而无需手工格式化字符串。

您通常可以在以下内容中了解有关数据绑定的信息:

一些警告

不要使用文档中显示的数据绑定顺序:

cmbStatementDate.DataSource=dt;
cmbStatementDate.DisplayMember = "statement_date";

这将尽可能使用原始DisplayMember值重新绘制控件两次

WPF

数据绑定和格式字符串也可以在WPF中使用,甚至可能更易于使用。如果不使用数据绑定,则可以使用:

创建格式化的组合框。
<ComboBox x:Name="cmbStatementDate" 
          DisplayMemberPath="statement_date" ItemStringFormat="d" />

<ComboBox x:Name="cmbStatementDate" 
          DisplayMemberPath="statement_date" ItemStringFormat="dd-MM-yyyy" />

并使用:

加载数据
cmbStatementDate.ItemsSource=dt1;

此代码看起来像数据绑定,但不是

使用数据绑定,该组合可以绑定到代码隐藏或ViewModel类中的属性,例如:

<ComboBox x:Name="cmbStatementDate" 
          DisplayMemberPath="statement_date" 
          ItemStringFormat="dd-MM-yyyy" 
          ItemsSource="{Binding Path=MyDateData}"
          SelectedValue="{Binding Path=SelectedDate}" />

在这种情况下,MyDateDataSelectedDate指代代码隐藏或ViewModel中的属性。

Data Binding Overview

中描述了WPF中的数据绑定。

答案 1 :(得分:-2)

您可以像这样编辑代码

Connection con1 = new Connection();
cmbStatementDate.Items.Clear();
con1.dataGet("SELECT distinct  statement_date from stockstatement ORDER BY statement_date asc");
DataTable dt1 = new DataTable();
con1.sda.Fill(dt1);
foreach (DataRow dr1 in dt1.Rows)
{
     cmbStatementDate.Items.Add(Convert.ToDateTime(dr1["statement_date"]).ToString("DD-MM-YYYY"));
}

答案 2 :(得分:-3)

您是说它已经是表上的date \ datetime类型,并且您想将其视为dd-MM-yyyy字符串吗?如果是这样:

((DateTime)dr1["statement_date"]).ToString("dd-MM-yyyy");

会这样做。