C# C中的“添加到日期的天数”问题#
我正在Visual Studio 2019中使用C#。我已经完成了在日期中添加天的编码,日期在Label1中。当我在本地系统上执行代码时,它工作正常。但是,当我在服务器上执行代码时,它会错误地将天添加到日期 我的代码如下所示: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
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", "");
}