C# C中的“添加到日期的天数”问题#

C# C中的“添加到日期的天数”问题#,c#,datetime,C#,Datetime,我正在Visual Studio 2019中使用C#。我已经完成了在日期中添加天的编码,日期在Label1中。当我在本地系统上执行代码时,它工作正常。但是,当我在服务器上执行代码时,它会错误地将天添加到日期 我的代码如下所示: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Label1.Text = DateTime.Now.ToString("d

我正在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");
}
在服务器上执行代码将返回以下输出—例如,今天的日期是2020年7月9日,我得到以下输出:

  • 点击按钮:
    7/10/2020
  • 点击按钮:
    11/7/2020
  • 点击按钮:
    08/11/2020
  • 点击按钮:
    12/08/2020
  • 点击按钮:
    09/12/2020
  • 点击按钮:
    13/09/2020

    • 它在我的机器上工作,因为我是法国人

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

      您应该将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");
        }
      }
      

      您可以指定程序运行的线程的区域性,以在所有计算机上获得相同的行为


      我删除了日期格式(“dd/MM/yyyy”),然后问题就解决了

      受保护的无效页面加载(对象发送方、事件参数e) { 如果(!IsPostBack) {


      您需要检查服务器上的区域和语言选项配置。您可以使用
      DateTime.ParseExact
      进行反向转换。感谢您的回复,但问题尚未解决,现在它显示的是日期01/01/2001,并添加了天数。可能由于
      if(!IsPostBack)而未初始化var
      …如果删除此测试或使用
      private DateTime Label1DateTime=DateTime.Now;
      为了确保有东西,请指示指向新代码文件的链接。很抱歉,此日期显示为1/2/0001 12:00:00,因此:日期未初始化检查IsPostBack…即使使用原始代码也是如此。如果这是webforms,则在回发期间不会保留私有变量。
                  DateTime dt = DateTime.Now;
                  DateTime dateonly = dt.Date;
                  Label1.Text = dateonly.ToString().Replace(" 12:00:00 AM","");
                 
              }
          }
      
          protected void Button1_Click(object sender, EventArgs e)
          {
              Label1.Text = Convert.ToDateTime(Label1.Text).AddDays(1).ToString().Replace(" 12:00:00 AM", "");
              
          }