C# 如何从日期时间中减去一年和一天?

C# 如何从日期时间中减去一年和一天?,c#,datetime,C#,Datetime,我看到的答案是这样的,但如何在这之后添加1天?就像两年前的一天 var myDate = DateTime.Now; var newDate = myDate.AddYears(-2); var NewExpiryDate = myDate.AddDays(-1); var NewFinalDate = ? 你做错了什么: myDate将是当前日期,然后将-2年与当前日期一起添加,并分配给newDate。它不会更新myDate它仍然是当前日期,因此您需要向新日期添加-1天以获得所需的输出。您可

我看到的答案是这样的,但如何在这之后添加1天?就像两年前的一天

var myDate = DateTime.Now;
var newDate = myDate.AddYears(-2);
var NewExpiryDate = myDate.AddDays(-1);
var NewFinalDate = ?

你做错了什么:

myDate
将是当前日期,然后将
-2
年与当前日期一起添加,并分配给
newDate
。它不会更新
myDate
它仍然是当前日期,因此您需要向
新日期添加
-1
天以获得所需的输出。您可以使用以下更简单的方法:

var newDate = myDate.AddYears(-2).AddDays(-1);
注意:日期函数不会更改源,它将返回添加指定数字的新日期时间 这一实例的价值是多少年。 正如索纳所说,
DateTime
是一个不可变的类型,这意味着它是一个对象,其状态在创建后无法修改


你做错了什么:

myDate
将是当前日期,然后将
-2
年与当前日期一起添加,并分配给
newDate
。它不会更新
myDate
它仍然是当前日期,因此您需要向
新日期添加
-1
天以获得所需的输出。您可以使用以下更简单的方法:

var newDate = myDate.AddYears(-2).AddDays(-1);
注意:日期函数不会更改源,它将返回添加指定数字的新日期时间 这一实例的价值是多少年。 正如索纳所说,
DateTime
是一个不可变的类型,这意味着它是一个对象,其状态在创建后无法修改


您需要
AddDays
newDate
,而不是
myDate
<代码>var NewExpiryDate=newDate.AddDays(-1)。最后一行根本不需要。或者,您可以编写
var date=DateTime.Now.AddYears(-2).AddDays(-1)
您需要
AddDays
newDate
,而不是
myDate
<代码>var NewExpiryDate=newDate.AddDays(-1)。最后一行根本不需要。或者,您可以编写
var date=DateTime.Now.AddYears(-2).AddDays(-1)DateTime
是不可变的类型。你不能改变它们。即使你认为你改变了它们,你实际上还是创建了一个新的
DateTime
实例。哇!!!它解决了我的问题。现在所有的查询都少了两年零一天。谢谢:)@down投票人:感谢他们的精神和支持。这是一个开放的社区,不是展示个人复仇的地方。是的,那是因为
DateTime
是不可变的类型。你不能改变它们。即使你认为你改变了它们,你实际上还是创建了一个新的
DateTime
实例。哇!!!它解决了我的问题。现在所有的查询都少了两年零一天。谢谢:)@down投票人:感谢他们的精神和支持。这是一个开放的社区,不是个人复仇的地方。