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

时间:2015-10-06 06:10:21

标签: c# datetime

我有以下3个字段 startingdateexpirydatenumber of months

startingdate = DateTimeOffset.Now;

和月数,24个月

如何计算expirydate = ?

有人可以给我一个想法吗?

1 个答案:

答案 0 :(得分:4)

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

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中的所有内容会更加清晰。
  • 如果你真的意味着你有日期而不是日期和时间,你可能想要明确使用午夜......不幸的是.NET没有任何“仅限日期”类型。您可能需要考虑使用我的Noda Time,它旨在使事情比BCL API更清晰。