C#日期操纵
我做错了吗C#日期操纵,c#,datetime,C#,Datetime,我做错了吗 DateTime previousDay = new DateTime(year, month, day); string test1 = previousDay.ToString(); previousDay.Subtract(new TimeSpan(1, 0, 0, 0)); string test2 = previousDay.ToString();
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
previousDay.AddDays(-1);
string test3 = previousDay.ToString();
由于某些可能对大多数人来说显而易见的原因,日期不会从test1更改为test3。救命啊
DateTime
是不可变的-当您调用Subtract
时,它不会更改调用的目标,而是返回一个新值:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test3 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
虽然我会使用-
操作符和TimeSpan.FromDays
:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test2 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test3 = previousDay.ToString();
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test2 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test3 = previousDay.ToString();
或者更好地使用AddDays
:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test2 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test3 = previousDay.ToString();
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test2 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test3 = previousDay.ToString();
或者更好的是,使用:)
或:
DateTime
是不可变的-当调用Subtract
时,它不会更改调用的目标,而是返回一个新值:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test3 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
虽然我会使用-
操作符和TimeSpan.FromDays
:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test2 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test3 = previousDay.ToString();
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test2 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test3 = previousDay.ToString();
或者更好地使用AddDays
:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test2 = previousDay.ToString();
previousDay = previousDay - TimeSpan.FromDays(1);
string test3 = previousDay.ToString();
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test2 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
string test3 = previousDay.ToString();
或者更好的是,使用:)
或:
DateTime
是不可变的,这意味着对Subtract
和AddDays
的每次调用实际上都会返回一个带有值的新实例previousDay
永远不会更改。DateTime
是不可变的,这意味着每次调用Subtract
和AddDays
实际上都会返回一个带值的新实例<代码>前一天将永远不会更改。:)这将返回一个新的日期时间,但不会更改调用者对象值
previousDay.AddDays(-1);
:)这将返回新的日期时间,但不会更改调用方对象值
previousDay.AddDays(-1);
Try:(因为类似DateTime的字符串类是不可变的)
等等。试试:(因为类似日期时间的字符串类是不可变的)
等等。用新值减去返回时间跨度。您继续使用旧值 更多信息:
用新值减去返回时间间隔。您继续使用旧值 更多信息: 修改此行:
previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
作为
或
如果不想更改上一个变量
DateTime updatedPreviousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
修改此行:
previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
作为
或
如果不想更改上一个变量
DateTime updatedPreviousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
问题是您实际上没有更改前一天的值 您需要实际分配新值:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test3 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
问题是您实际上没有更改前一天的值 您需要实际分配新值:
DateTime previousDay = new DateTime(year, month, day);
string test1 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test3 = previousDay.ToString();
previousDay = previousDay.AddDays(-1);
您只需从datetime变量中减去新的timespan,而不是将结果赋给datetime变量。因此,这些更改不会影响datetime变量。所以,最好这样做
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
or
string test2 = (previousDay.Subtract(new TimeSpan(1, 0, 0, 0))).ToString();
您只需从datetime变量中减去新的timespan,而不是将结果赋给datetime变量。因此,这些更改不会影响datetime变量。所以,最好这样做
previousDay = previousDay.Subtract(new TimeSpan(1, 0, 0, 0));
string test2 = previousDay.ToString();
or
string test2 = (previousDay.Subtract(new TimeSpan(1, 0, 0, 0))).ToString();
嗯,我说这对大多数人来说可能是显而易见的!谢谢你这么完整的回答@bukko请将上面的帖子设置为“答案”,嗯,我说这对大多数人来说可能是显而易见的!谢谢你这么完整的回答@bukko请把上面的帖子设为“回答”,我们又被抓了。团结这群弱者,让我们投票击败他吧!我们又被抓了。团结这群弱者,让我们投票击败他吧!