如何在日期(datetimeoffset格式)中执行乘法
本文关键字:执行 格式 datetimeoffset 日期 | 更新日期: 2023-09-27 18:16:23
我有以下3个字段startingdate
, expirydate
, number of months
startingdate = DateTimeOffset.Now;
和月数,表示24
个月
如何计算expirydate = ?
在这种情况下不需要乘法—只需加法,指定单位:
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更清晰。