【问题标题】:How to Get 3 days before date if get date from database?如果从数据库中获取日期,如何获取日期前 3 天?
【发布时间】:2019-10-08 04:21:16
【问题描述】:

我有一个表单,用户填写有关 XYZ 的信息,包括开始日期和到期日期。单击按钮时,信息将保存在数据库中。现在我需要在到期日前 3 天,并且需要在 web 表单前的标签中显示。到期日期是 12/12/2012 这个日期现在保存在数据库中,当用户打开他的个人资料时,必须显示到期日期 09/12/2012

我从当前日期获得日期前 3 天,但不知道如果日期来自数据库,如何获得任何想法?

您可以在 lbltest 的代码中看到我显示当前日期前 3 天 和 Label1 从数据库中获取日期

SqlCommand cmd = new SqlCommand("Select Enddate from moudetails", con);
SqlDataAdapter DA = new SqlDataAdapter(cmd);
DataTable Dt = new DataTable();
DA.Fill(Dt);
if (Dt.Rows.Count > 0)
{
    lbltest.Text = DateTime.Now.AddDays(-3).ToString("dd/MM/yyyy");
    Label1.Text = Dt.Rows[0]["Enddate"].ToString();                
}

【问题讨论】:

  • 使用从数据库中读取的 DateTime 字段,而不是 DateTime.Now
  • 对不起,先生,但它跳到我头上,你能解释一下我是怎么做的吗?
  • 在你的情况下,像DateTime.Parse(Dt.Rows[0]["Enddate"].ToString()).AddDays(-3); 这样的东西就可以了。
  • lbltest.Text = Dt.Rows[0].Field<DateTime>("Enddate").AddDays(-3).ToString("dd/MM/yyyy");

标签: c# asp.net sql-server webforms


【解决方案1】:

如果您将日期存储为字符串,请尝试使用DateTime.ParseExact 方法。然后您就可以从从数据库中检索到的日期中扣除三天。

基于 cmets,另一个可行的解决方案是将对象转换为日期时间:

Label1.Text = (Dt.Rows[0]["Enddate"] as DateTime).ToString()

【讨论】:

  • 乐于助人!如果您没有其他问题,请将其标记为已接受的答案。 :) 我添加了另一个您可能可以使用的选项。
【解决方案2】:

我使用了 ISPain17 先生建议的这种方法

 SqlCommand cmd = new SqlCommand("Select Enddate from moudetails", con);
    SqlDataAdapter DA = new SqlDataAdapter(cmd);
    DataTable Dt = new DataTable();
    DA.Fill(Dt);
    if (Dt.Rows.Count > 0)
    {
        string dateString = Dt.Rows[0]["Enddate"].ToString();
        //lbltest.Text = DateTime.Now.AddDays(-3).ToString("dd/MM/yyyy");
        //Label1.Text = Dt.Rows[0]["Enddate"].ToString();
        Label1.Text = DateTime.Parse(dateString).AddDays(-3).ToString();
    }

及其工作:D

【讨论】:

  • 您不需要将 DateTime 转换为字符串,然后解析日期,然后再转换为字符串。检查您将什么存储到数据库中。如果您已经存储为日期时间,则可以直接使用 AddDays 方法。现在日期时间 = 日期时间。现在; string asString = now.ToString("dd MMMM yyyy hh:mm:ss tt"); Console.WriteLine(asString);
  • Dt.Rows[0]["Enddate"] 根据文档返回一个对象:docs.microsoft.com/en-us/dotnet/api/…。您需要将此对象转换为 DateTime,这也可以工作。但它不会是没有演员表的 DateTime。
【解决方案3】:

您可以使用 System.Convert

string dateString = Dt.Rows[0]["Enddate"].ToString();
DateTime date = Convert.ToDateTime(dateString);

date.AddDays(-3).ToString();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 2023-02-16
    • 2015-10-06
    相关资源
    最近更新 更多