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

C# 如何在日期(datetimeoffset格式)中执行乘法,c#,datetime,C#,Datetime,我有以下3个字段 开始日期,到期日期,月数 startingdate = DateTimeOffset.Now; 和月数,例如24month 如何计算到期日=? 有人能给我一个主意吗?在这种情况下,你不需要乘法,只需要加法,指定单位: DateTimeOffset startDate = DateTimeOffset.Now; DateTimeOffset expiryDate = startDate.AddMonths(months); 有两点需要注意: 日期和时间算术可以是奇数。在你的

我有以下3个字段
开始日期
到期日期
月数

startingdate = DateTimeOffset.Now;
和月数,例如
24
month

如何计算到期日=?


有人能给我一个主意吗?

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

DateTimeOffset startDate = DateTimeOffset.Now;
DateTimeOffset expiryDate = startDate.AddMonths(months);
有两点需要注意:

  • 日期和时间算术可以是奇数。在你的例子中,它不太可能比正常情况更奇怪,因为你有2年的时间,所以唯一的极端情况是2月29日加2年,2月28日;通常你需要考虑(比如说)增加1个月到8月31日和9月30日。换句话说,仅仅因为两个到期日相同并不意味着它们来自同一个起始日期
  • <> LI>您可能需要考虑使用<代码> DeTeMeOffice。UtcNow < /代码>,并在UTC中执行所有操作,而不是使用本地时区。使用
    DateTimeOffset
    而不是
    DateTime
    在某种程度上保护您免受时区问题的影响,但将所有内容保持在UTC更为清晰
  • 如果你的意思是你有日期,而不是日期和时间,你可能想明确使用午夜。。。不幸的是.NET没有任何“仅日期”类型。您可能需要考虑使用My,该设计旨在使事物比BCL API更清晰。

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

DateTimeOffset startDate = DateTimeOffset.Now;
DateTimeOffset expiryDate = startDate.AddMonths(months);
有两点需要注意:

  • 日期和时间算术可以是奇数。在你的例子中,它不太可能比正常情况更奇怪,因为你有2年的时间,所以唯一的极端情况是2月29日加2年,2月28日;通常你需要考虑(比如说)增加1个月到8月31日和9月30日。换句话说,仅仅因为两个到期日相同并不意味着它们来自同一个起始日期
  • <> LI>您可能需要考虑使用<代码> DeTeMeOffice。UtcNow < /代码>,并在UTC中执行所有操作,而不是使用本地时区。使用
    DateTimeOffset
    而不是
    DateTime
    在某种程度上保护您免受时区问题的影响,但将所有内容保持在UTC更为清晰
  • 如果你的意思是你有日期,而不是日期和时间,你可能想明确使用午夜。。。不幸的是.NET没有任何“仅日期”类型。您可能需要考虑使用My,该设计旨在使事物比BCL API更清晰。

真的吗?你找不到AddMonths?哦,为什么我没看到,…实际上我是个初学者真的吗?你找不到AddMonths?哦,为什么我没有看到,…实际上我是个初学者