如何在日期(datetimeoffset格式)中执行乘法

本文关键字:执行 格式 datetimeoffset 日期 | 更新日期: 2023-09-27 18:16:23

我有以下3个字段startingdate, expirydate, number of months

startingdate = DateTimeOffset.Now;

和月数,表示24个月

如何计算expirydate = ?

谁能给我一个主意?

如何在日期(datetimeoffset格式)中执行乘法

在这种情况下不需要乘法—只需加法,指定单位:

DateTimeOffset startDate = DateTimeOffset.Now;
DateTimeOffset expiryDate = startDate.AddMonths(months);

有两点需要注意:

  • 日期和时间算术可以是奇数。在你的例子中,它比正常情况下更不可能是奇数,因为你有2年,所以唯一的极端情况是在2月29日加上2年,得到2月28日;通常情况下,你需要考虑(比如)在8月31日加上1个月,得到9月30日。换句话说,仅仅因为两个过期日期相同并不意味着它们来自相同的开始日期。
  • 您可能要考虑使用DateTimeOffset.UtcNow并在UTC中执行所有操作,而不是使用本地时区。使用DateTimeOffset而不是DateTime可以在一定程度上保护您免受时区问题的困扰,但将所有内容保持在UTC则更清晰。
  • 如果你真的意味着你有日期而不是日期和时间,你可能想要明确地使用midnight…不幸的是。net没有任何"仅限日期"类型。你可能想考虑使用我的Noda Time,它的设计使事情比BCL API更清晰。