首页 > 解决方案 > 在 C# 中添加日期到日期问题中的问题

问题描述

我在 Visual Studio 2019 中使用 C#。我已完成编码以在日期中添加天数,日期在 Label1 中。当我在本地系统上执行代码时,它工作正常。但是当我在服务器上执行代码时,它会错误地将日期添加到日期中。

我的代码显示在这里:

protected void Page_Load(object sender, EventArgs e)
{
     if (!IsPostBack)
     {
         Label1.Text = DateTime.Now.ToString("dd/MM/yyyy");
     }
}

protected void Button1_Click(object sender, EventArgs e)
{
    Label1.Text = Convert.ToDateTime(Label1.Text).AddDays(1).ToString("dd/MM/yyyy");
}

在服务器上执行代码会返回以下输出 - 例如今天的日期是 09/07/2020,我得到这个输出:

标签: c#datetime

解决方案


它适用于我的机器,因为我是法国人......

您的系统区域设置和日期格式是什么?

您应该将 DateTime 保存在私有变量中并使用它而不是标签来增加以避免转换问题:

private DateTime Label1DateTime;

private void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
    Label1DateTime = DateTime.Now;
    Label1.Text = Label1DateTime.ToString("dd/MM/yyyy");
  }
}

private void Button1_Click(object sender, EventArgs e)
{
  Label1DateTime = Label1DateTime.AddDays(1);
  Label1.Text = TheDateTime.ToString("dd/MM/yyyy");
}

现在它应该可以在任何系统上运行。


在 WinForms 上,如果您不想创建类成员,也可以使用标签的 Tag 属性...

private void Form_Load(object sender, EventArgs e)
{
  Label1.Tag = DateTime.Now;
  Label1.Text = ((DateTime)Label1.Tag).ToString("dd/MM/yyyy");
}

private void Button1_Click(object sender, EventArgs e)
{
  if ( Label1.Tag is DateTime )
  { 
    var date = ((DateTime)Label1.Tag);
    date = date.AddDays(1);
    Label1.Tag = date;
    Label1.Text = date.ToString("dd/MM/yyyy");
  }
}

推荐阅读