我的代码中有这样的东西DateTime.Now.ToString("dd.MM.yy");
,我需要给它加1周,就像5.4.2012
变成12.4.2012
我试图将它转换为int然后加起来,但是当它达到30时就会出现问题。
你能告诉我一些聪明的方法吗?
您希望将其保留为 a DateTime
,直到您准备好将其转换为字符串。
DateTime.Now.AddDays(7).ToString("dd.MM.yy");
首先,在您准备好显示或序列化它(例如,JSON 或保存在文件中)之前,始终将数据保持在其本机类型中。在添加或相乘之前,您不会将两个int
变量转换为字符串,因此也不要使用日期。
保持原生类型有一些优点,例如将DateTime
内部存储为 8 个字节,这比大多数字符串格式要小。但最大的优势是 .NET Framework 为您提供了一系列内置方法来执行日期和时间计算,以及从源字符串解析日期时间值。完整列表可以在这里找到。
所以你的答案变成:
DateTime.Now
。DateTime.Now.Date
如果您宁愿使用午夜而不是当前时间,请使用。AddDays(7)
一周后计算。请注意,此方法会自动考虑到下个月或下一年的滚动(如果适用)。闰日也为您考虑在内。// Current local server time + 7 days
DateTime.Now.AddDays(7).ToString("dd.MM.yy");
// Midnight + 7 days
DateTime.Now.Date.AddDays(7).ToString("dd.MM.yy");
框架中还有很多其他方法可以帮助:
TimeSpan
处理时间间隔的类任何你不能使用 AddDays 方法的原因
DateTime.Now.AddDays(7)