【问题标题】:Change date format in C# when reading from database and setting to label从数据库读取并设置为标签时更改 C# 中的日期格式
【发布时间】:2017-02-17 09:17:19
【问题描述】:

我正在尝试从数据库中读取 date 字段并将其设置为标签字段。我使用以下代码,

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ConnectionString);
con.Open();

SqlCommand cmd = new SqlCommand("select BirthDate from Student where Name=@name", con);
cmd.Parameters.AddWithValue("@name", "Mano");

SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);

lblName.Text = dt.Rows[0]["Date"].ToString();

但这会以02-05-1991 00:00:00 格式显示标签中的数据值,但我想以dd-mm-yyyy 格式将其显示为05-02-1991。所以我尝试了以下代码:

lblName.Text = dt.Rows[0]["BirthDate"].ToString("dd-mm-yyyy");

但它显示了这个错误:

ToString 方法没有重载需要 1 个参数

如何更改格式?

【问题讨论】:

    标签: c# asp.net sql-server string date


    【解决方案1】:

    您需要将日期值视为 DateTime,然后从具有所需格式选项的 DateTime 结构中调用 ToString 的重载。

    实际上,您正在将行值转换为字符串,而字符串对如何格式化日期一无所知。

    DateTime t = dt.Rows[0].Field<DateTime>("Date");
    lblName.Text = t.ToString("dd-MM-yyyy");
    

    还要注意月份部分的正确格式。它是一个大写的M。小写的m 代表分钟。

    【讨论】:

      【解决方案2】:

      假设BirthDate代表一个有效的DateTime,在调用ToString()之前转换它。

      lblName.Text = Convert.ToDateTime(dt.Rows[0]["BirthDate"]).ToString("dd-mm-yyyy");
      

      您当前正在对象类上调用 ToString() 方法,而不是 DateTime 类,因此没有允许使用日期格式化程序的重载。

      【讨论】:

      • 它的工作即时通讯在 SQL 表中使用date 格式..带有值05-02-1991 但在 C# 中,当我将格式设置为dd-mm-yyyy 它在标签中显示为02-05-1991 这是否意味着 SQL 存储date 格式为mm-dd-yyyy ??
      • 不,这意味着给定的格式字符串是错误的,它应该是dd-MM-yyyy,因为日期时间格式中的mm是指分钟而不是月。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多